def get_args()

in benchmarks/perf-tool/okpt/io/args.py [0:0]


def get_args() -> Union[TestArgs, DiffArgs]:
    """Define, parse and return command line args.

    Returns:
        A dict containing the command line args.
    """
    parser = argparse.ArgumentParser(
        description=
        'Run performance tests against the OpenSearch plugin and various ANN '
        'libaries.'
    )

    def define_args():
        """Define tool commands."""

        # add log level arg
        parser.add_argument(
            '--log',
            default='info',
            type=str,
            choices=['debug',
                     'info',
                     'warning',
                     'error',
                     'critical'],
            help='Log level of the tool.'
        )

        subparsers = parser.add_subparsers(
            title='commands',
            dest='command',
            help='sub-command help'
        )
        subparsers.required = True

        # add subcommands
        _add_test_cmd(subparsers)
        _add_diff_cmd(subparsers)

    define_args()
    args = parser.parse_args()
    if args.command == 'test':
        return TestArgs(
            log=args.log,
            command=args.command,
            config=args.config,
            output=args.output
        )
    else:
        return DiffArgs(
            log=args.log,
            command=args.command,
            metadata=args.metadata,
            base_result=args.base_result,
            changed_result=args.changed_result,
            output=args.output
        )