diff --git a/halfapi/cli/cli.py b/halfapi/cli/cli.py index 28c4189..382e98f 100644 --- a/halfapi/cli/cli.py +++ b/halfapi/cli/cli.py @@ -34,3 +34,5 @@ if IS_PROJECT: else: from . import init + +from . import routes diff --git a/halfapi/cli/routes.py b/halfapi/cli/routes.py new file mode 100644 index 0000000..2bf68c8 --- /dev/null +++ b/halfapi/cli/routes.py @@ -0,0 +1,37 @@ +#!/usr/bin/env python3 +""" +cli/routes.py Defines the "halfapi routes" cli commands +""" +# builtins +import sys +import importlib + +import click + +from .cli import cli + +from ..lib.domain import gen_router_routes + +@click.argument('module', required=True) +@click.option('--export', default=False, is_flag=True) +@cli.command() +def routes(module, export=False): + """ + The "halfapi routes" command + """ + try: + mod = importlib.import_module(module) + except ImportError as exc: + raise click.BadParameter('Cannot import this module', param=module) from exc + + if export: + for path, verb, m_router, fct, parameters in gen_router_routes(mod, []): + for param in parameters: + click.echo(';'.join(( + path, + verb, + m_router.__name__, + fct.__name__, + param['acl'].__name__, + ','.join((param.get('in', []))) + )))