From: Vasek Sraier Date: Tue, 11 Jan 2022 12:28:17 +0000 (+0100) Subject: cli: tool for manually generating Lua config from declarative config X-Git-Tag: v6.0.0a1~54 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=6e4d217f0ccfc200af88a267373070da7ede50cc;p=thirdparty%2Fknot-resolver.git cli: tool for manually generating Lua config from declarative config closes #37 --- diff --git a/manager/knot_resolver_manager/client/__main__.py b/manager/knot_resolver_manager/client/__main__.py index 62d8f022e..06c3b7b5c 100644 --- a/manager/knot_resolver_manager/client/__main__.py +++ b/manager/knot_resolver_manager/client/__main__.py @@ -2,8 +2,12 @@ import ipaddress import sys import click +from click.exceptions import ClickException from knot_resolver_manager.client import KnotManagerClient +from knot_resolver_manager.datamodel.config_schema import KresConfig +from knot_resolver_manager.exceptions import KresManagerException +from knot_resolver_manager.utils.parsing import parse_yaml BASE_URL = "base_url" @@ -30,6 +34,22 @@ def stop(ctx: click.Context): client.stop() +@main.command("gen-lua", help="Generate LUA config from a given declarative config") +@click.argument("config_path", type=str, nargs=1) +def gen_lua(config_path: str): + try: + with open(config_path, "r", encoding="utf8") as f: + data = f.read() + parsed = parse_yaml(data) + config = KresConfig(parsed) + lua = config.render_lua() + click.echo_via_pager(lua) + except KresManagerException as e: + ne = ClickException(str(e)) + ne.exit_code = 1 + raise ne + + @main.command(help="Set number of workers") @click.argument("instances", type=int, nargs=1) @click.pass_context