From 4a8cb008e6c15cea24155bd2d54d82a02d95f4fe Mon Sep 17 00:00:00 2001 From: Maxime Alves LIRMM Date: Mon, 22 Nov 2021 20:06:50 +0100 Subject: [PATCH] [cli.routes] add routes command, allows exporting route dict as csv --- halfapi/cli/cli.py | 2 ++ halfapi/cli/routes.py | 37 +++++++++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) create mode 100644 halfapi/cli/routes.py 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', []))) + )))