{"id":26893541,"url":"https://github.com/dazz/voodoo-magic","last_synced_at":"2025-10-10T08:42:24.999Z","repository":{"id":3690990,"uuid":"4761449","full_name":"dazz/voodoo-magic","owner":"dazz","description":"Bash Script Development Framework","archived":false,"fork":false,"pushed_at":"2012-06-23T10:49:40.000Z","size":197,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":2,"default_branch":"master","last_synced_at":"2025-06-21T10:45:36.596Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":"Shell","has_issues":false,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/dazz.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2012-06-23T10:47:06.000Z","updated_at":"2018-03-21T22:00:59.000Z","dependencies_parsed_at":"2022-09-10T23:01:04.158Z","dependency_job_id":null,"html_url":"https://github.com/dazz/voodoo-magic","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/dazz/voodoo-magic","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dazz%2Fvoodoo-magic","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dazz%2Fvoodoo-magic/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dazz%2Fvoodoo-magic/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dazz%2Fvoodoo-magic/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/dazz","download_url":"https://codeload.github.com/dazz/voodoo-magic/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/dazz%2Fvoodoo-magic/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":261237812,"owners_count":23128844,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2025-03-31T23:58:18.047Z","updated_at":"2025-10-10T08:42:19.943Z","avatar_url":"https://github.com/dazz.png","language":"Shell","funding_links":[],"categories":[],"sub_categories":[],"readme":"Voodoo-Magic\n============\n\nVodoo-Magic is a shell-script development framework written in Bash. It aims on\nproviding a flexible and extensible code-base for any and every kind of quirky\nvoodoo-magic shell-script fantasy of your needs.\n\nVoodoo-Magic has adepted many design concepts from Rear (Relax and Recover) to\nachieve a very high level of flexibility when it comes down to one of those\nsituations where you could rly rly use a nifty Bash script, but then realize the\noverhead in taking care of all the business- and error logic surrounding your\nactual few lines of script code.\n\nThe approach of the framework is easily explained. It distinguishes peripheral\nlogic from actual payload code and provides an abstraction layer called workflow\nfor you to write this actual script code in. The framework surrounding it\nprovides all sorts of useful tools and helpers to achieve your goal with maximum\neffectiveness. Your workflow is then accessible as shell parameter within the\nframework, e.g. `voodoo-magic \u003cworkflow\u003e`. See `voodoo-magic help workflow` for\nmore details.\n\nVoodoo-Magic targets junior admins and operators that either want to play around\nwith Bash or even improve their skills while learning more about all the\nfeatures and possibilities it has to offer. It can even be very helpful in many\ncommon situations as described above, but should be seen in a more or less\nacademic context, after all. Please, feel welcome to contribute to voodoo-magic\nin form of framework optimizations, creative ideas and all sorts of nifty\nvoodoo-magic workflows.\n\n\u003e **Voodoo-Magic is still alpha-state software and under ongoing development.**\n\nUnderlaying Design-Concept\n==========================\n\nVoodoo-Magic takes advantage of the GNU 'source' binary to include other script\nfiles. The possibility to spread code across several files brings up the idea of\nstructuring your files in a very definit directory tree layout and then sourcing\nthem recursivly in a predefined order.\n\nSuddenly it is possible to put process-logic into the directory structure\nitself, meaning that changing the order or location of the script files, changes\nthe workflow as scripts are sourced in a different way. If-conditions can even\ndecide to either walk down the scripts in directory tree A or directory tree B.\nNot only if-conditions, but also shell arguments could manipulate the behaviour\nin which files are sourced in what order.\n\nBasically a workflow within the framework, is nothing more than a predefined\ndirectory structure that the framework can source because it knows the internal\nlayout. Now assume we call one sub-directory conf/ and another one we could call\nfunctions/ and another one doc/ and so on, and we have various directory\nstructures of exectly this type laying around side by side. We can check if a\ndirectory with the name $1 exists and if so, recursivly source all files in a\nsensefully predefined order inside that directory. That's pretty much all the\nmagic there is to it.\n\nRealizing the possibilities of this design-concept, the idea arose to write a\ndevelopment framework, by adding plenty of useful helper functions and global\nvariables around the workflow before sourcing it, opening the possibility to\nwrite small scripts by outsourcing all the repetative logic into the outlaying\nframework. The framework provides an environment for the workflow with tools and\nhelpers for repetative tasks you would otherwise have to write over and over.\n\nSevere parts of the design-concept have been adapted from Rear - Relax and\nRecover.\n\n\nLicensing\n=========\n\nVoodoo-Magic is free software; you can redistribute it and/or modify it under\nthe terms of the GNU General Public License as published by the Free Software\nFoundation; either version 2 of the License, or (at your option) any later\nversion.\n\nVoodoo-Magic is distributed in the hope that it will be useful, but WITHOUT ANY\nWARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A\nPARTICULAR PURPOSE.  See the GNU General Public License for more details.\n\nYou should have received a copy of the GNU General Public License along with\nVoodoo-Magic; if not, write to the Free Software Foundation, Inc., 51 Franklin\nSt, Fifth Floor, Boston, MA  02110-1301  USA\n\n\nInstallation\n============\n\nVoodoo-Magic comes with an installation workflow so it can easily be installed\nto /. See `voodoo-magic help install` for more information.\n\n\nFeatures\n========\n\nVoodoo-Magic currently supports the following features:\n- General\n  - High flexibility and extendability achieved by its modularity\n  - Open-Source straight up from the bottom\n- Logging\n  - Single stand-alone logfile\n  - Log-rotation (rotates once per execution of the framework)\n  - Redirecting of stderr into the logfile while executing workflows\n  - Debug-Logging (provided by helper)\n  - Script-Debug-Mode (log workflow related jobs with set -x)\n  - Verbose mode (echo everything to stdout that goes to the logfile)\n- Available Helpers\n  - Echo to stdout and the logfile under various conditions\n  - Easily add, parse and validate shell-arguments for workflows\n  - Intuitive handling of exit-tasks, simply use AddExitTask 'command'\n  - Several other various helper functions\n- Available Workflows\n  - Meta-workflow for managing workflows, e.g. create new ones, listing\n    availabe workflows, as well as packaging and distribution of workflows\n  - Install the framework to / (also includes routines for uninstalling)\n  - Fork the entire framework into a new project (incl. fork-commit)\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdazz%2Fvoodoo-magic","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fdazz%2Fvoodoo-magic","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fdazz%2Fvoodoo-magic/lists"}