← Files ClaraARCHIVED FILE

modules/funnel-analysis/scripts/run_funnel_analysis.py

1.38 KB · Oct 2, 2026 · 00:29 UTC

↓ Download file

"""Command-line entry point for deterministic funnel-stage tables."""

from __future__ import annotations

import argparse
import json
import sys
from pathlib import Path

from funnel_core import run_funnel_analysis

__all__ = ["main"]


def parse_args(argv: list[str] | None = None) -> argparse.Namespace:
    """Parse command-line arguments."""

    parser = argparse.ArgumentParser(description=__doc__)
    parser.add_argument("source_file", type=Path)
    parser.add_argument("--output-dir", type=Path, required=True)
    parser.add_argument("--recipe", type=Path, default=None)
    parser.add_argument(
        "--language", default="en", choices=("en", "it", "fr", "de", "es")
    )
    return parser.parse_args(argv)


def main(argv: list[str] | None = None) -> int:
    """Run the funnel-stage table generator."""

    args = parse_args(argv or sys.argv[1:])
    result = run_funnel_analysis(
        args.source_file,
        args.output_dir,
        args.recipe,
        language=args.language,
    )
    payload = {
        "status": "ok",
        "html_path": str(result.html_path),
        "csv_path": str(result.csv_path),
        "context_path": str(result.context_path),
        "manifest_path": str(result.manifest_path),
        "row_count": len(result.rows),
    }
    sys.stdout.write(json.dumps(payload, indent=2) + "\n")
    return 0


if __name__ == "__main__":
    raise SystemExit(main())

SHA-256: 8b315f87ec629bbd66d483736f13209dcec3e9e16d7de82388bc50e96c36a977