diff options
Diffstat (limited to 'lib/spack/external/archspec/cli.py')
-rwxr-xr-x | lib/spack/external/archspec/cli.py | 60 |
1 files changed, 51 insertions, 9 deletions
diff --git a/lib/spack/external/archspec/cli.py b/lib/spack/external/archspec/cli.py index 4338b84fed..4049f98f7a 100755 --- a/lib/spack/external/archspec/cli.py +++ b/lib/spack/external/archspec/cli.py @@ -6,19 +6,61 @@ archspec command line interface """ -import click +import argparse +import typing import archspec import archspec.cpu -@click.group(name="archspec") -@click.version_option(version=archspec.__version__) -def main(): - """archspec command line interface""" +def _make_parser() -> argparse.ArgumentParser: + parser = argparse.ArgumentParser( + "archspec", + description="archspec command line interface", + add_help=False, + ) + parser.add_argument( + "--version", + "-V", + help="Show the version and exit.", + action="version", + version=f"archspec, version {archspec.__version__}", + ) + parser.add_argument("--help", "-h", help="Show the help and exit.", action="help") + subcommands = parser.add_subparsers( + title="command", + metavar="COMMAND", + dest="command", + ) -@main.command() -def cpu(): - """archspec command line interface for CPU""" - click.echo(archspec.cpu.host()) + cpu_command = subcommands.add_parser( + "cpu", + help="archspec command line interface for CPU", + description="archspec command line interface for CPU", + ) + cpu_command.set_defaults(run=cpu) + + return parser + + +def cpu() -> int: + """Run the `archspec cpu` subcommand.""" + print(archspec.cpu.host()) + return 0 + + +def main(argv: typing.Optional[typing.List[str]] = None) -> int: + """Run the `archspec` command line interface.""" + parser = _make_parser() + + try: + args = parser.parse_args(argv) + except SystemExit as err: + return err.code + + if args.command is None: + parser.print_help() + return 0 + + return args.run() |