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