#!/usr/bin/env python3
from __future__ import annotations

import argparse
import yaml
from pathlib import Path

ROOT = Path(__file__).resolve().parents[1]

def main() -> int:
    ap = argparse.ArgumentParser()
    ap.add_argument("--in", dest="input_file", default="spec/13_formula_registry.yaml")
    ap.add_argument("--out", dest="output_file", default="spec/03_formulas/formula_registry.normalized.yaml")
    args = ap.parse_args()

    in_path = ROOT / args.input_file
    out_path = ROOT / args.output_file

    if not in_path.exists():
        print(f"Input registry file not found: {in_path}")
        return 1

    try:
        data = yaml.safe_load(in_path.read_text(encoding="utf-8"))
    except Exception as e:
        print(f"Error parsing input YAML: {e}")
        return 1

    # Simple validation and copying to normalized version
    # Each formula should have owner, inputs, outputs, etc.
    formulas = data.get("formula_registry", {}).get("formulas", {})
    
    # Let's ensure the output structure is clean
    normalized = {
        "schema_version": "formula_registry.normalized.v2",
        "description": "Normalized formula registry for QEDD development framework",
        "formulas": formulas
    }

    out_path.parent.mkdir(parents=True, exist_ok=True)
    out_path.write_text(yaml.safe_dump(normalized, sort_keys=False, allow_unicode=True), encoding="utf-8")
    
    print(f"Successfully normalized registry: {out_path}")
    return 0

if __name__ == "__main__":
    import sys
    sys.exit(main())
