Source code for main

import argparse
import sys
from importlib.metadata import version

from hyrax import Hyrax
from hyrax.verbs import all_verbs, fetch_verb_class, is_verb_class


[docs] def main(): """Primary entry point for the Hyrax CLI. This handles dispatching to the various Hyrax actions and returning a result. """ description = "Hyrax CLI" epilog = "Hyrax is the Framework for Image-Based Anomaly Detection" parser = argparse.ArgumentParser(description=description, epilog=epilog) parser.add_argument("--version", dest="version", action="store_true", help="Show version") # cut off "usage: " from beginning and "\n" from end so we get an invocation # which subcommand parsers can add to appropriately. subparser_usage_prefix = parser.format_usage()[7:-1] subparsers = parser.add_subparsers(title="Verbs:", required=False) # Add a subparser for every verb, (whether defined by function or class) for cli_name in all_verbs(): subparser_kwargs = {} if is_verb_class(cli_name): verb_class = fetch_verb_class(cli_name) subparser_kwargs = verb_class.add_parser_kwargs verb_parser = subparsers.add_parser( cli_name, prog=subparser_usage_prefix + " " + cli_name, **subparser_kwargs ) if is_verb_class(cli_name): verb_class.setup_parser(verb_parser) verb_parser.set_defaults(verb=cli_name) _add_major_arguments(verb_parser) args = parser.parse_args() if args.version: print(version("hyrax")) return if not args.verb: parser.print_help() sys.exit(1) hyrax_instance = Hyrax(config_file=args.runtime_config) retval = 0 if is_verb_class(args.verb): verb = fetch_verb_class(args.verb)(hyrax_instance.config) retval = verb.run_cli(args) else: getattr(hyrax_instance, args.verb)() exit(retval)
[docs] def _add_major_arguments(parser): parser.add_argument("--version", dest="version", action="store_true", help="Show version") parser.add_argument("-c", "--runtime-config", type=str, help="Full path to runtime config file")
if __name__ == "__main__": main()