Source code for miniwerk.console

"""CLI entrypoints for miniwerk"""
from typing import Any
import logging
import asyncio

import click
from libadvian.logging import init_logging

from miniwerk import __version__
from miniwerk.config import MWConfig
from miniwerk.lewrap import get_le_certs
from miniwerk.mkcwrap import get_mk_certs
from miniwerk.manifests import create_rasenmaeher_manifest, create_all_product_manifests

[docs] LOGGER = logging.getLogger(__name__)
@click.group() @click.version_option(version=__version__) @click.option("-l", "--loglevel", help="Python log level, 10=DEBUG, 20=INFO, 30=WARNING, 40=CRITICAL", default=30) @click.option("-v", "--verbose", count=True, help="Shorthand for info/debug loglevel (-v/-vv)")
[docs] def cligrp(loglevel: int, verbose: int) -> None: """Minimal KRAFTWERK amulation to be able to run a RASENMAEHER+products deployment on any VM""" if verbose == 1: loglevel = 20 if verbose >= 2: loglevel = 10 init_logging(loglevel) LOGGER.setLevel(loglevel)
@cligrp.command(name="config")
[docs] def dump_config() -> None: """Show the resolved config as JSON""" click.echo(MWConfig.singleton().model_dump_json())
@cligrp.command(name="certs") @click.pass_context
[docs] def do_certs(ctx: Any) -> None: """Get and/or renew certs based on configuration""" async def call() -> int: """Do the call""" config = MWConfig.singleton() if config.mkcert: await get_mk_certs() else: await get_le_certs() return 0 ctx.exit(asyncio.get_event_loop().run_until_complete(call()))
@cligrp.command(name="manifests") @click.pass_context
[docs] def create_manifests(ctx: Any) -> None: """Create manifests""" async def call() -> int: """Do the call""" await create_rasenmaeher_manifest() await create_all_product_manifests() return 0 ctx.exit(asyncio.get_event_loop().run_until_complete(call()))
@cligrp.command(name="init") @click.pass_context
[docs] def do_full_init(ctx: Any) -> None: """Create manifests, get certs, everything that is needed""" async def call() -> int: """Do the call""" config = MWConfig.singleton() await create_rasenmaeher_manifest() await create_all_product_manifests() if config.mkcert: await get_mk_certs() else: await get_le_certs() return 0 ctx.exit(asyncio.get_event_loop().run_until_complete(call()))
[docs] def miniwerk_cli() -> None: """cli entrypoint""" init_logging(logging.WARNING) cligrp() # pylint: disable=no-value-for-parameter