63 lines
1.7 KiB
Python
63 lines
1.7 KiB
Python
import argparse
|
|
import logging
|
|
import sys
|
|
from typing import List
|
|
|
|
from .combine import combine_command
|
|
from .eval import eval_command
|
|
from .format_manifest import format_manifest_command
|
|
from .index import index_command
|
|
from .path import ROOT
|
|
from .update import update_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)
|