def main(): CONF.register_cli_opt(command_opt) if len(sys.argv) < 2: script_name = sys.argv[0] print("%s category action [<args>]" % script_name) print(_("Available categories:")) for category in CATEGORIES: print(_("\t%s") % category) sys.exit(2) try: logging.register_options(CONF) cfg_files = cfg.find_config_files(project='umbrella', prog='umbrella-api') cfg_files.extend(cfg.find_config_files(project='umbrella', prog='umbrella-manage')) config.parse_args(default_config_files=cfg_files) logging.setup(CONF, 'umbrella') except RuntimeError as e: sys.exit("ERROR: %s" % e) try: if CONF.command.action.startswith('db'): return CONF.command.action_fn() else: func_kwargs = {} for k in CONF.command.action_kwargs: v = getattr(CONF.command, 'action_kwarg_' + k) if v is None: continue if isinstance(v, six.string_types): v = encodeutils.safe_decode(v) func_kwargs[k] = v func_args = [encodeutils.safe_decode(arg) for arg in CONF.command.action_args] return CONF.command.action_fn(*func_args, **func_kwargs) except Exception as e: sys.exit("ERROR: %s" % utils.exception_to_str(e))
def fail(e): return_code = 500 sys.stderr.write("ERROR: %s\n" % utils.exception_to_str(e)) sys.exit(return_code)