from pathlib import Path import typer from tht.cli.config_cmd import CONFIG_OPT from tht.cli.schema_cmd import _load_config_or_exit from tht.cli.session_cmd import load_session_or_exit, session_dir datamart_app = typer.Typer(help="Fase 8 — generazione dbt del datamart (hook)") @datamart_app.command("generate") def generate_cmd( session: str = typer.Option(..., "--session", help="Id della sessione."), mode: str = typer.Option( ..., "--mode", help="Variante paziente: 'clear' (in chiaro) o 'pseudonymized' (mascherato).", ), config: Path = CONFIG_OPT, ) -> None: """Innesca la generazione dbt del datamart (Fase 8). Hook: stub non operativo.""" from tht.cli.phase_cmd import require_phase_or_exit from tht.datamart import DATAMART_MODES, generate_dbt_datamart cfg = _load_config_or_exit(config) load_session_or_exit(cfg, session) if mode not in DATAMART_MODES: typer.secho( f"ERRORE: mode '{mode}' non valido. Valori: {', '.join(DATAMART_MODES)}", fg=typer.colors.RED, err=True, ) raise typer.Exit(code=1) require_phase_or_exit(cfg, session, 8) try: generate_dbt_datamart(session_dir(cfg, session), mode) except NotImplementedError as e: typer.secho( f"NOTA: {e} (hook, mode={mode}). Nessuna azione eseguita.", fg=typer.colors.YELLOW, ) raise typer.Exit(code=0) typer.secho(f"OK: dbt del datamart generato (mode={mode}).", fg=typer.colors.GREEN)