"""Manages the CLI component of the tool.""" import argparse def parse_inputs() -> argparse.Namespace: """Parse inputs from argparse. :returns the argparse Namespace to be evaluated """ parser = argparse.ArgumentParser() parser.add_argument("flake_path", metavar="flake-path", help="path to flake to evaluate") parser.add_argument("--keep-hydra", action="store_true", help="retain Hydra jobs") parser.add_argument("--build", action="store_true", help="allow building Hydra jobs") parser.add_argument("--evaluate", action="store_true", help="allow evaluating Hydra jobs") parser.add_argument( "--json", metavar="json-path", help="whether or not to output evaluations to a json" ) parser.add_argument( "--compare-drvs", action="store_true", help="whether to compare two drv sets, must provide two evaluation jsons to compare", ) parser.add_argument( "--compare-pre-json", metavar="pre-json-path", default=None, help="location of pre.json for comparison. defaults to /pre.json", ) parser.add_argument( "--compare-post-json", metavar="post-json-path", default=None, help="location of post.json for comparison. defaults to /post.json", ) parser.add_argument( "--compare-output-to-file", action="store_true", help="whether to output comparison output to a file", ) parser.add_argument( "--compare-output-file", metavar="compare-output-file-path", default=None, help="location of comparison output. defaults to /post-diff. implies --compare-output-to-file.", ) args = parser.parse_args() if args.compare_pre_json is None: args.compare_pre_json = args.flake_path + "/pre.json" if args.compare_post_json is None: args.compare_post_json = args.flake_path + "/post.json" if args.compare_output_to_file and args.compare_output_file is None: args.compare_output_file = args.flake_path + "/post-diff" if args.compare_output_file is not None: args.compare_output_to_file = True return args