#!/usr/bin/env python3
"""
publicar.py - Punto de entrada real de `sipi publicar`.

`sipi_cli.py` (`cmd_publicar`) ya buscaba este archivo exacto
(`os.path.join(AQUI, "publicar.py")`, con `AQUI` = la carpeta de
`sipi_cli.py`, es decir `src/`) desde hace varias versiones del
CHANGELOG -- pero el archivo nunca habia llegado a este paquete, asi
que `sipi publicar` fallaba siempre con "no se encontro 'publicar.py'
en esta carpeta". El trabajo pesado (proteger el codigo, armar la
carpeta de distribucion, chequeo de secretos) ya estaba resuelto en
`herramientas/proteger_codigo.py` (`preparar_publicacion`) -- a este
archivo le tocaba solo ser el puente que `sipi publicar` esperaba
encontrar.

Uso:
    sipi publicar                (via el CLI, desde cualquier carpeta del proyecto)
    python3 publicar.py          (directo)
    python3 publicar.py --salida /ruta/custom
"""
import argparse
import os
import sys

AQUI = os.path.dirname(os.path.abspath(__file__))
RAIZ_REPO = os.path.dirname(AQUI)
CARPETA_HERRAMIENTAS = os.path.join(RAIZ_REPO, "herramientas")

if CARPETA_HERRAMIENTAS not in sys.path:
    sys.path.insert(0, CARPETA_HERRAMIENTAS)

try:
    import proteger_codigo
except ImportError:
    print("[SiPi] Error: no se encontro 'herramientas/proteger_codigo.py'. "
          "Este archivo espera vivir dentro de un checkout completo del proyecto "
          "(carpeta de desarrollo, no una carpeta ya publicada).")
    sys.exit(1)


def main():
    parser = argparse.ArgumentParser(
        description="Arma la carpeta 'publicacion/' lista para distribuir: "
                     "codigo con logica real protegido + recursos (docs, ejemplos, "
                     "iconos, tests, licencia) copiados tal cual."
    )
    parser.add_argument("--salida", metavar="CARPETA", default=None,
                         help="Carpeta de salida (default: 'publicacion/' en la raiz del proyecto).")
    args = parser.parse_args()

    resultado = proteger_codigo.preparar_publicacion(args.salida)
    sys.exit(0 if resultado["ok"] else 1)


if __name__ == "__main__":
    main()
