#!/usr/bin/env python3
"""
Import Excel → copro_gestion (par contextes).

Exemples :
  python import_excel.py --dry-run --all
  python import_excel.py --only personnes
  python import_excel.py --only lots --no-reset
  python import_excel.py --all --prod
"""
from __future__ import annotations

import argparse
import os
import sys

sys.path.insert(0, os.path.dirname(__file__))

from app.excel_import.config import (
    CONTEXT_ORDER,
    DEFAULT_EXCEL,
    IMPORT_CONFIG_PATH,
    load_import_config,
)
from app.excel_import.runner import print_summary, run_import


def main() -> None:
    parser = argparse.ArgumentParser(description="Import Excel copro_gestion")
    parser.add_argument(
        "--excel",
        type=str,
        default=str(DEFAULT_EXCEL),
        help="Fichier Excel source",
    )
    parser.add_argument(
        "--config",
        type=str,
        default=str(IMPORT_CONFIG_PATH),
        help="Fichier JSON des réponses questionnaire",
    )
    parser.add_argument(
        "--dry-run",
        action="store_true",
        help="Simulation sans écriture en base",
    )
    group = parser.add_mutually_exclusive_group()
    group.add_argument(
        "--only",
        choices=CONTEXT_ORDER,
        help="Un seul contexte",
    )
    group.add_argument(
        "--all",
        action="store_true",
        help="Tous les contextes dans l'ordre",
    )
    parser.add_argument(
        "--prod",
        action="store_true",
        help="Cible copropriete.db (sauvegarde auto + reset avant import)",
    )
    parser.add_argument(
        "--no-reset",
        action="store_true",
        help="Ne pas réinitialiser la base avant import (enchaîner les contextes)",
    )
    args = parser.parse_args()

    if not args.only and not args.all:
        parser.error("Indiquez --only <contexte> ou --all")

    if args.prod and not args.all:
        parser.error("--prod nécessite --all")

    excel_path = __import__("pathlib").Path(args.excel)
    if not excel_path.is_file():
        print(f"Fichier Excel introuvable : {excel_path}", file=sys.stderr)
        sys.exit(1)

    config = load_import_config(__import__("pathlib").Path(args.config))
    contexts = list(CONTEXT_ORDER) if args.all else [args.only]
    reset = not args.no_reset and not args.dry_run

    if args.prod and not args.dry_run:
        print("⚠ Import PRODUCTION : sauvegarde + nouvelle base + import complet")

    reports = run_import(
        excel_path=excel_path,
        config=config,
        contexts=contexts,
        dry_run=args.dry_run,
        prod=args.prod,
        reset=reset,
    )
    print_summary(reports, save=not args.dry_run)


if __name__ == "__main__":
    main()
