#
# Erminig - Analyse d'arguments pour govel
# Copyright (C) 2025 L0m1g
# Sous licence DOUARN - Voir le fichier LICENCE pour les détails
#
# Ce fichier fait partie du projet Erminig.
# Libre comme l’air, stable comme un menhir, et salé comme le beurre.
#

import argparse
from pathlib import Path
from erminig.core.config import Config
from erminig.controllers.govel.pakva import Pakva
from erminig.controllers.govel.build import run_build_function, run_pak_function
from erminig.core.package import Package


def main():
    parser = argparse.ArgumentParser(description="Govel – Build artisanal Erminig")
    subparsers = parser.add_subparsers(dest="command")

    build_parser = subparsers.add_parser("build")
    build_parser.add_argument("--name", help="Nom du paquet à builder")

    args = parser.parse_args()

    if args.command == "build":
        if args.name:
            pakva = Pakva.load_from_name(args.name)
        else:
            pakva_path = Path.cwd() / "Pakva"
            if not pakva_path.exists():
                print("[GOVEL] Erreur : Aucun Pakva trouvé dans le dossier courant.")
                return
            pakva = Pakva.read(pakva_path)

        pak_success = False

        build_success = run_build_function(pakva.path, pakva.name, pakva.version)
        if build_success:
            pak_success = run_pak_function(pakva.path, pakva.name, pakva.version)

        if pak_success:
            tmp_path = f"{Config.BUILD_DIR}/{pakva.name}-{pakva.version}"
            pkg = Package(pakva.name, pakva.version, tmp_path)
            pkg.generate_manifest()
            pkg.write_manifest()
            pkg.copy_pakva(pakva.path)
            pkg.build_archive()
            print(f"[GOVEL] Build réussi pour {pakva.name}")
        else:
            print(f"[GOVEL] Build échoué pour {pakva.name}")


if __name__ == "__main__":
    main()
