from __future__ import annotations

import argparse
import json
import sys
from pathlib import Path

ROOT = Path(__file__).resolve().parents[1]
sys.path.insert(0, str(ROOT))

from open_data.aggregator import OpenDataBroker  # noqa: E402


def parse_args() -> argparse.Namespace:
    parser = argparse.ArgumentParser(description="Refresh public open-data caches for the Foncier narratif prototype.")
    parser.add_argument("--geo", action="store_true", help="Refresh AULA territory scope from API Geo.")
    parser.add_argument("--conso-enaf-metadata", action="store_true", help="Refresh CONSOENAF data.gouv metadata.")
    parser.add_argument("--all", action="store_true", help="Run all safe refresh steps.")
    return parser.parse_args()


def main() -> int:
    args = parse_args()
    broker = OpenDataBroker(ROOT)
    ran = []

    if args.all or args.geo:
        ran.append({"geo": broker.refresh_geo_scope()})
    if args.all or args.conso_enaf_metadata:
        ran.append({"conso_enaf_metadata": broker.refresh_conso_enaf_metadata()})

    if not ran:
        print("Nothing to do. Use --geo, --conso-enaf-metadata or --all.")
        return 2

    print(json.dumps(ran, ensure_ascii=False, indent=2))
    return 0


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