Source code for numistalib.cli.mints

"""Mints CLI commands."""


import click

from numistalib.cli.theme import CLISettings
from numistalib.config import Settings
from numistalib.services import MintService

# pyright: reportUnusedFunction = false


[docs] def register_mints_commands(parent: click.Group) -> None: """Register mints commands with parent group. Parameters ---------- parent : click.Group Parent click group to attach commands to """ @parent.command() @click.option("--lang", default="en", type=click.Choice(["en", "es", "fr"]), help="Language") def mints(lang: str) -> None: """List all mints. Examples: numistalib mints numistalib mints --lang es """ settings = Settings() client = Settings.to_client(settings) service = MintService(client) model_cls = getattr(service, "MODEL", None) try: results = service.get_mints(lang=lang) if not results: CLISettings.console().print("[warning]No mints found[/warning]") return output = model_cls.render_table(results, "Mints") # type: ignore[union-attr] CLISettings.console().print(output) CLISettings.console().print(f"\n[success]Found {len(results)} mints[/success]") except (RuntimeError, OSError, ValueError) as err: service.handle_cli_error(err, "listing mints", "mints-list") @parent.command(name="mint") @click.argument("mint_id", type=int) @click.option("--lang", default="en", type=click.Choice(["en", "es", "fr"]), help="Language") def mint(mint_id: int, lang: str) -> None: """Show details for a specific mint.""" console = CLISettings.console() settings = Settings() client = Settings.to_client(settings) service = MintService(client) try: result = service.get_mint(mint_id, lang=lang) panel = service._format_panel(result) console.print(panel) console.print("\n[success]Displayed mint details[/success]") except (RuntimeError, OSError, ValueError) as err: service.handle_cli_error(err, f"retrieving mint {mint_id}", "mint-get") # Alias for convenience parent.add_command(mint, name="mnt")