Source code for collective.transmute.commands.settings

from collective.transmute import _types as t
from collective.transmute.settings.parse import get_default_settings
from collective.transmute.utils import settings as utils
from pathlib import Path

import tomlkit
import typer


app = typer.Typer()


[docs] def dump_settings(settings: t.TransmuteSettings) -> str: """Dump settings as TOML string.""" data = settings._raw_data document = utils.settings_to_toml(data) return tomlkit.dumps(document)
[docs] @app.callback(invoke_without_command=True) def settings(ctx: typer.Context) -> None: """Report settings to be used by this application.""" if getattr(ctx, "obj", None) is None: # Check if we a have a subcommand (like 'generate') if ctx.invoked_subcommand != "generate": typer.echo("Did not find a transmute.toml file") typer.echo("You should first run 'uv run transmute generate'") raise typer.Exit(1) from None else: return msg = "Settings used by this application" typer.echo(msg) typer.echo("-" * len(msg)) settings: t.TransmuteSettings = ctx.obj.settings config_file = settings.config["filepath"] local_settings = f"Local settings: {config_file}" typer.echo(local_settings) typer.echo("-" * len(local_settings)) # Print settings for line in dump_settings(settings).split("\n"): typer.echo(line)
[docs] @app.command(name="generate") def generate() -> None: """Generate a new ``transmute.toml`` settings file in the current directory.""" settings = get_default_settings() data = dump_settings(settings) path = Path("transmute.toml").resolve() if path.exists(): typer.echo(f"File already exists: {path}") raise typer.Exit(1) from None path.write_text(data, encoding="utf-8") typer.echo(f"Generated a settings file at {path}")