6.NUR/ci/nur/__init__.py
2023-05-01 08:13:15 +02:00

63 lines
1.7 KiB
Python

import argparse
import logging
import sys
from typing import List
from .combine import combine_command
from .format_manifest import format_manifest_command
from .index import index_command
from .path import ROOT
from .update import update_command
from .eval import eval_command
LOG_LEVELS = dict(
debug=logging.DEBUG,
info=logging.INFO,
error=logging.ERROR,
critical=logging.CRITICAL,
)
def parse_arguments(argv: List[str]) -> argparse.Namespace:
parser = argparse.ArgumentParser(
prog=argv[0], description="nur management commands"
)
parser.add_argument(
"--log-level", type=str, default="debug", choices=list(LOG_LEVELS.keys())
)
subparsers = parser.add_subparsers(description="subcommands")
combine = subparsers.add_parser("combine")
combine.add_argument("directory")
combine.set_defaults(func=combine_command)
format_manifest = subparsers.add_parser("format-manifest")
format_manifest.set_defaults(func=format_manifest_command)
update = subparsers.add_parser("update")
update.set_defaults(func=update_command)
eval = subparsers.add_parser("eval")
eval.add_argument("directory", default=".")
eval.set_defaults(func=eval_command)
index = subparsers.add_parser("index")
index.add_argument("directory", default=ROOT)
index.set_defaults(func=index_command)
args = parser.parse_args(argv[1:])
if not hasattr(args, "func"):
print("subcommand is missing", file=sys.stderr)
parser.print_help(sys.stderr)
sys.exit(1)
return args
def main() -> None:
args = parse_arguments(sys.argv)
logging.basicConfig(level=LOG_LEVELS[args.log_level])
args.func(args)