]> scripts.mit.edu Git - wizard.git/blob - bin/wizard
Refactor to get rid of _package.py using __import__ magic.
[wizard.git] / bin / wizard
1 #!/usr/bin/env python
2
3 import os
4 import optparse
5 import sys
6
7 sys.path.insert(0,os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
8
9 import wizard
10 from wizard import command
11
12 def main():
13     usage = """usage: %prog COMMAND [ARGS]
14
15 Wizard is a Git-based autoinstall management system for scripts.
16
17 Its commands are:
18     info            Reports information about an autoinstall
19     massmigrate     Performs mass migration of autoinstalls of an application
20     migrate         Migrate autoinstalls from old format to Git-based format
21     summary         Generate statistics (see help for subcommands)
22     upgrade         Upgrades an autoinstall to the latest version
23
24 See '%prog help COMMAND' for more information on a specific command."""
25
26     parser = optparse.OptionParser(usage)
27     parser.disable_interspersed_args()
28     _, args = parser.parse_args() # no global options
29     rest_argv = args[1:]
30     baton = command.OptionBaton()
31     baton.add("--versions-path", dest="versions_path",
32         default="/afs/athena.mit.edu/contrib/scripts/sec-tools/store/versions",
33         help="Location of parallel-find output directory, or a file containing a newline separated list of 'all autoinstalls' (for testing).")
34     try:
35         command_name = args[0]
36     except IndexError:
37         parser.print_help()
38         raise SystemExit(1)
39     if command_name == "help":
40         try:
41             get_command(rest_argv[0]).main(['--help'], baton)
42         except (AttributeError, ImportError):
43             parser.error("invalid action")
44         except IndexError:
45             parser.print_help()
46             raise SystemExit(1)
47     # Dispatch commands
48     try:
49         command_module = get_command(command_name)
50     except (AttributeError, ImportError):
51         parser.error("invalid action")
52     command_module.main(rest_argv, baton)
53
54 def get_command(name):
55     __import__("wizard.command." + name)
56     return getattr(wizard.command, name)
57
58 if __name__ == "__main__":
59     main()
60