def main(): import argparse parser = argparse.ArgumentParser(description=_DESCRIPTION, add_help=True) parser.add_argument('-c', '--config', metavar='FILE', dest='config', type=basestring, default=None, help='configuration file') parser.add_argument('-L', '--log-level', dest='loglevel', default='info', choices=logs.LOGLEVELS + [l.lower() for l in logs.LOGLEVELS], help="console log level") parser.add_argument('-v', '--verbose', dest='verbose', default=False, action='store_true', help="set verbose/debug level") parser.add_argument('--log-file', dest='logfile', default=None, help="log file") parser.add_argument('--log-file-level', dest='logfilelevel', default=None, choices=logs.LOGLEVELS + [l.lower() for l in logs.LOGLEVELS], help="log file level") subparsers = parser.add_subparsers(help='supported commands help:', dest='command') _delayed_warnings = None register_all() # for all possible sub-commands, check if they have their own sub-parser and and it if present... commands = PLUGINS_REGISTRIES['candelabra.command'] for command_name, command_instance in commands.plugins.iteritems(): try: parser_command = subparsers.add_parser(command_name, help=command_instance.DESCRIPTION) command_instance.argparser(parser_command) except AttributeError, e: _delayed_warnings = 'command "%s" cannot parse args' % command_name except Exception, e: _delayed_warnings = 'could not load parser for "%s"' % command_name
def setUpClass(cls): config.load_string(cls.CONFIG) register_all()