#!/usr/bin/env python import os import optparse import sys 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 COMMAND [ARGS] Wizard is a Git-based autoinstall management system for scripts. Its commands are: configure Configures an autoinstall (database, etc) to work errors Lists all broken autoinstall metadata info Reports information about an autoinstall install Installs an application 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 (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() _, args = parser.parse_args() # no global options rest_argv = args[1:] baton = command.OptionBaton() baton.add("--versions-path", dest="versions_path", default=getenvpath("WIZARD_VERSIONS_PATH") or "/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 development work). Environment variable is WIZARD_VERSIONS_PATH.") baton.add("--srv-path", dest="srv_path", default=getenvpath("WIZARD_SRV_PATH") or "/afs/athena.mit.edu/contrib/scripts/git/autoinstalls", help="Location of autoinstall Git repositories, such that $REPO_PATH/$APP.git is a repository (for development work). Environment variable is WIZARD_SRV_PATH.") try: command_name = args[0] except IndexError: parser.print_help() raise SystemExit(1) if command_name == "help": try: help_module = get_command(rest_argv[0]) except ImportError: parser.error("invalid action") except IndexError: parser.print_help() raise SystemExit(1) help_module.main(['--help'], baton) # Dispatch commands try: command_module = get_command(command_name) except ImportError: parser.error("invalid action") command_module.main(rest_argv, baton) def get_command(name): __import__("wizard.command." + name) return getattr(wizard.command, name) def getenvpath(name): val = os.getenv(name) if val: val = os.path.abspath(val) return val if __name__ == "__main__": main()