From e24aea77455d08a5629b77ac18951eb74b1929f5 Mon Sep 17 00:00:00 2001 From: Jake Howard Date: Fri, 27 Nov 2015 18:14:35 +0000 Subject: [PATCH] Added project core CLI --- project/cli.py | 37 +++++++++++++++++++++++++++++++++++++ scripts/__init__.py | 0 2 files changed, 37 insertions(+) create mode 100644 project/cli.py create mode 100644 scripts/__init__.py diff --git a/project/cli.py b/project/cli.py new file mode 100644 index 0000000..887bd86 --- /dev/null +++ b/project/cli.py @@ -0,0 +1,37 @@ +import os.path +import click +import logging + + +FORMAT = "[%(levelname)s]: %(message)s" +logging.basicConfig(format=FORMAT, level=logging.DEBUG) +logging.getLogger("requests").setLevel(logging.WARNING) + + +class DotFileCLI(click.MultiCommand): + + def list_commands(self, ctx): + return [] + + def get_command(self, ctx, name): + ns = {} + if name not in self.list_commands(ctx): + return + try: + fn = os.path.join(os.path.dirname(__file__), name + '/cli.py') + with open(fn) as f: + code = compile(f.read(), fn, 'exec') + eval(code, ns, ns) + return ns['cli'] + except: + return + +cli = DotFileCLI(help='This tool\'s subcommands are loaded from a plugin folder dynamically.') + +if __name__ == '__main__': + cli() + + +@click.command(cls=DotFileCLI) +def cli(): + pass diff --git a/scripts/__init__.py b/scripts/__init__.py new file mode 100644 index 0000000..e69de29