caudal/empaquetado/escritorio/construir.sh
2026-10-20 17:45:13 -05:00

28 lines
1.5 KiB
Bash
Executable file

#!/bin/sh
# Construye el programa de escritorio de Caudal: un solo fichero que lleva
# dentro su Python y se usa desde el navegador, sin instalar nada.
# sh empaquetado/escritorio/construir.sh [carpeta de trabajo]
# Deja el fichero en <carpeta de trabajo>/dist/caudal. Vale para sistemas
# iguales o más nuevos que aquel en el que se construye, y para su misma
# arquitectura. Necesita python3 con venv e internet (baja PyInstaller y las
# dependencias de Caudal a un entorno propio dentro de la carpeta de trabajo).
set -eu
RAIZ="$(cd "$(dirname "$0")/../.." && pwd)"
OBRA="${1:-$RAIZ/empaquetado/escritorio/obra}"
mkdir -p "$OBRA"
python3 -m venv "$OBRA/venv"
"$OBRA/venv/bin/pip" install --quiet --upgrade pip
"$OBRA/venv/bin/pip" install --quiet -r "$RAIZ/programa/requirements.txt" "pyinstaller>=6"
cd "$OBRA"
"$OBRA/venv/bin/pyinstaller" --noconfirm --clean --onefile --name caudal \
--paths "$RAIZ/programa" \
--add-data "$RAIZ/programa/cartera/web:cartera/web" \
--add-data "$RAIZ/programa/cartera/ejemplo:cartera/ejemplo" \
--add-data "$RAIZ/programa/cartera/fiscal/reglas:cartera/fiscal/reglas" \
--add-data "$RAIZ/programa/cartera/serie_btc_eur.csv:cartera" \
--add-data "$RAIZ/programa/cartera/serie_ipv.json:cartera" \
--add-data "$RAIZ/programa/cartera/serie_tierra.json:cartera" \
--add-data "$RAIZ/programa/cartera/serie_vpo.json:cartera" \
--distpath "$OBRA/dist" --workpath "$OBRA/build" --specpath "$OBRA" \
"$RAIZ/empaquetado/escritorio/caudal.py"
ls -l "$OBRA/dist/caudal"