X-Git-Url: https://scripts.mit.edu/gitweb/wizard.git/blobdiff_plain/53b2bb2bcfedf9c8cb4e94c7ce8cbeb40bf033da..283c243073f83c1438f618eb4cd80a4cbcb27541:/bin/wizard diff --git a/bin/wizard b/bin/wizard index 7170c7a..6ff98a4 100755 --- a/bin/wizard +++ b/bin/wizard @@ -4,46 +4,59 @@ import os import optparse import sys -# Add lib to path -sys.path.insert(0,os.path.abspath(os.path.join(__file__,'../../lib'))) -import wizard.command +sys.path.insert(0,os.path.dirname(os.path.dirname(os.path.abspath(__file__)))) + +import wizard +from wizard import command def main(): - usage = """usage: %prog [-s|--versions] COMMAND [ARGS] + usage = """usage: %prog COMMAND [ARGS] Wizard is a Git-based autoinstall management system for scripts. Its commands are: + errors Lists all broken autoinstall metadata info Reports information about an autoinstall + list Lists autoinstalls, with optional filtering massmigrate Performs mass migration of autoinstalls of an application migrate Migrate autoinstalls from old format to Git-based format - summary Generate statistics about autoinstalls + summary Generate statistics (see help for subcommands) + upgrade Upgrades an autoinstall to the latest version See '%prog help COMMAND' for more information on a specific command.""" parser = optparse.OptionParser(usage) parser.disable_interspersed_args() - parser.add_option("-s", "--versions", dest="versions", - default="/afs/athena.mit.edu/contrib/scripts/sec-tools/store/versions", - help="Location of parallel-find output directory, or a file containing a newline separated list of 'all autoinstalls' (for testing).") - # Find the end of the "global" options - options, args = parser.parse_args() + _, args = parser.parse_args() # no global options rest_argv = args[1:] - command = args[0] # shouldn't fail - if command == "help": + baton = command.OptionBaton() + baton.add("--versions-path", dest="versions_path", + default="/afs/athena.mit.edu/contrib/scripts/sec-tools/store/versions", + help="Location of parallel-find output directory, or a file containing a newline separated list of 'all autoinstalls' (for testing).") + try: + command_name = args[0] + except IndexError: + parser.print_help() + raise SystemExit(1) + if command_name == "help": try: - getattr(wizard.command, rest_argv[0]).main(['-h'], options) - except AttributeError: + help_module = get_command(rest_argv[0]) + except ImportError: parser.error("invalid action") except IndexError: parser.print_help() - raise SystemExit(-1) + raise SystemExit(1) + help_module.main(['--help'], baton) # Dispatch commands try: - command_module = getattr(wizard.command, command) - except AttributeError: + command_module = get_command(command_name) + except ImportError: parser.error("invalid action") - command_module.main(rest_argv, options) + command_module.main(rest_argv, baton) + +def get_command(name): + __import__("wizard.command." + name) + return getattr(wizard.command, name) if __name__ == "__main__": main()