From ae81ec38858553247358ad6ac9fc87e848edd20a Mon Sep 17 00:00:00 2001 From: User Identifier Date: Sun, 11 Oct 2020 11:55:36 +0200 Subject: [PATCH] Move cli abstraction --- src/phi/cli.py | 47 +++++++++++++++++++++++++++++++++++++++++++++ src/phicli | 52 ++++++-------------------------------------------- 2 files changed, 53 insertions(+), 46 deletions(-) create mode 100644 src/phi/cli.py diff --git a/src/phi/cli.py b/src/phi/cli.py new file mode 100644 index 0000000..d3de618 --- /dev/null +++ b/src/phi/cli.py @@ -0,0 +1,47 @@ +import sys +import argparse +import inspect +from phi.logging import setup_logging, get_logger + +log = get_logger(__name__) + +parser = argparse.ArgumentParser() +subparses = parser.add_subparsers(title='actions', dest='action') + +cli_callbacks = {} + + +def register(action_info='', param_infos=[]): + def decorator(action): + # Get function name and arguments + action_name = action.__name__ + param_names = inspect.getfullargspec(action)[0] + + # Create subparser for specific action + subparser = subparses.add_parser(action_name, help=action_info) + + for i, name in enumerate(param_names): + info = param_infos[i] if i