Parse argv (sys.argv by default) and run the named subcommand.
Expected input, compatibility and file-access failures are reported as a
short message on stderr with a nonzero exit status; any other exception
keeps its traceback, and library callers of :func:pd2af.transform still
see the exception itself.
Source code in src/pd2af/cli.py
| def main(argv: list[str] | None = None) -> None:
"""Parse ``argv`` (``sys.argv`` by default) and run the named subcommand.
Expected input, compatibility and file-access failures are reported as a
short message on stderr with a nonzero exit status; any other exception
keeps its traceback, and library callers of :func:`pd2af.transform` still
see the exception itself.
"""
if argv is None:
argv = sys.argv[1:]
else:
argv = list(argv)
parser = argparse.ArgumentParser(
prog="pd2af",
description=(
"Transform a process-description map (CellDesigner or SBGN-PD) "
"into an activity-flow map."
),
)
parser.add_argument(
"--version",
action="version",
version=importlib.metadata.version("pd2af"),
)
subparsers = parser.add_subparsers(dest="command", required=True)
_add_transform_parser(subparsers)
_add_list_modes_parser(subparsers)
_add_list_groups_parser(subparsers)
# Default to the transform subcommand when the first token isn't a known
# subcommand or a help flag, so `pd2af map.xml` works like
# `pd2af transform map.xml`.
if not argv or (
argv[0] not in subparsers.choices
and argv[0] not in ("-h", "--help", "--version")
):
argv = ["transform", *argv]
args = parser.parse_args(argv)
try:
args.func(args)
except (ValueError, OSError) as error:
print(f"error: {error}", file=sys.stderr)
sys.exit(1)
|