You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

90 lines
2.5 KiB
Python

# Copyright (C) 2019 Intel Corporation
#
# SPDX-License-Identifier: MIT
import argparse
import logging as log
import sys
from .cli import (
project as project_module,
source as source_module,
item as item_module,
model as model_module,
# inference as inference_module,
create_command as create_command_module,
add_command as add_command_module,
remove_command as remove_command_module,
export_command as export_command_module,
# diff_command as diff_command_module,
# build_command as build_command_module,
stats_command as stats_command_module,
explain_command as explain_command_module,
)
from .version import VERSION
KNOWN_COMMANDS = {
# contexts
'project': project_module.main,
'source': source_module.main,
'item': item_module.main,
'model': model_module.main,
# 'inference': inference_module.main,
# shortcuts
'create': create_command_module.main,
'add': add_command_module.main,
'remove': remove_command_module.main,
'export': export_command_module.main,
# 'diff': diff_command_module.main,
# 'build': build_command_module.main,
'stats': stats_command_module.main,
'explain': explain_command_module.main,
}
def get_command(name, args=None):
return KNOWN_COMMANDS[name]
def loglevel(name):
numeric = getattr(log, name.upper(), None)
if not isinstance(numeric, int):
raise ValueError('Invalid log level: %s' % name)
return numeric
def parse_command(input_args):
parser = argparse.ArgumentParser()
parser.add_argument('command', choices=KNOWN_COMMANDS.keys(),
help='A command to execute')
parser.add_argument('args', nargs=argparse.REMAINDER)
parser.add_argument('--version', action='version', version=VERSION)
parser.add_argument('--loglevel', type=loglevel, default='info',
help="Logging level (default: %(default)s)")
general_args = parser.parse_args(input_args)
command_name = general_args.command
command_args = general_args.args
return general_args, command_name, command_args
def set_up_logger(general_args):
loglevel = general_args.loglevel
log.basicConfig(format='%(asctime)s %(levelname)s: %(message)s',
level=loglevel)
def main(args=None):
if args is None:
args = sys.argv[1:]
general_args, command_name, command_args = parse_command(args)
set_up_logger(general_args)
command = get_command(command_name, general_args)
return command(command_args)
if __name__ == '__main__':
sys.exit(main())