X-Git-Url: https://scripts.mit.edu/gitweb/wizard.git/blobdiff_plain/858252d3d5b3d4c3e162345217380f5d001e0a04..HEAD:/README diff --git a/README b/README index f6c23cd..5d0b88d 100644 --- a/README +++ b/README @@ -1,17 +1,81 @@ +Wizard Autoinstall +================== + +Wizard is a next-generation autoinstall management system with +an eye towards flexibility and scalability. It is licensed +under the MIT license (you can view the license contents in +LICENSE). + + +Compatibility +------------- + This is Python 2.6 only! + +The command package +------------------- + To add a new command to wizard, you need to touch the following locations: - bin/wizard Add a line describing your command in the helpstring -- lib/wizard/command/__init__.py - Add the line "import commandname" -- lib/wizard/command/commandname.py + +- wizard/command/command_name.py Implement your command there as main(). Copy the function signature and scaffolding from another file; it's non-trivial + Underscores in the module-name are referenced using dashes. + +As a command file, you're expected to have a main() and parse_args() +function. Try to keep main() one to two page function that can +be browsed for a descriptive overview of what the command does +internally. Use helper functions to create self-documenting +code. Don't make helper functions for one-liners. Place +all error classes at the bottom. + + +Notes for repository creation +----------------------------- + +See documentation for full instructions. + +- You are not going to be able to doctor a perfect repository + from scratch. + + * If you have a simple change to a commit message, or + something that you don't really need interactive control + over (such as methodically rm'ing a file), git + filter-branch is very superior. + + * 'git rebase -p -i' can be used to rewrite history interactively. + Doing this will nuke any manual merge resolution you + may have done (which may be a lot), thus, I highly + recommend that you enable rerere (rerere.enabled = true) + so that Git can automatically merge things for you. + If the merge fails, you'll still have to reconstitute + things manually. + + * You may want to consider using the Git sequencer, for + which you can find a patch on the interwebs (I've never + tried it before) + +- The obvious scripts specific change that a new repository + will have are the patches, but you should also check the + autoinstall scripts if they do anything special. In particular: + + - If it's a PHP application, it's probably inserting a php.ini + file and creating symlinks to it. Be sure to replace the + appropriate values with placeholders WIZARD_SESSIONNAME + and WIZARD_TMPDIR (Scripts) + + - You will probably need to generate relevant configuration + files for each version using 'wizard prepare-config' + + +Design decisions +---------------- -Design decision: - A mass tool will plow ahead even if the subcommand throws Wizard errors. Normal errors will cause us to halt completely. If the error that occured is within the realm @@ -19,3 +83,11 @@ Design decision: (or even possibly a code change), and would not cause harm if we continued going, we will keep going, and let the maintainer deal later on with the errors en masse. + + If the error is due to an error in our toolchain (and thus + many installs can be fixed by fixing our end), we want to + be able to re-run the mass tool with minimal fuss. + +- We use the Google Python style guide. See: + http://code.google.com/p/soc/wiki/PythonStyleGuide + However, we use 4-space indents, not 2-space indents.