caudal/programa/abrir_app.sh
2026-10-13 08:01:06 -05:00

71 lines
2.8 KiB
Bash
Executable file

#!/bin/bash
# abrir_app.sh — Abre la cartera en el navegador (aplicación nueva).
#
# bash abrir_app.sh ← datos/ de esta carpeta
# bash abrir_app.sh --datos otra/ ← otra carpeta de datos
#
# Deja la terminal abierta mientras uses la cartera; se cierra con el botón
# «Salir» de la página o con Ctrl+C.
cd "$(dirname "$0")" || exit 1
elegir_python() {
PY=python3
if [ -x /tmp/.cartera-venv/bin/python ]; then
PY=/tmp/.cartera-venv/bin/python # entorno del USB (instalar.sh)
fi
}
elegir_python
# openpyxl también cuenta: el Python del sistema puede traer requests y bs4 pero
# no openpyxl, y entonces arrancaba con él y «Exportar a Excel» fallaba
if ! "$PY" -c "import requests, bs4, openpyxl" 2>/dev/null; then
# Tras reiniciar el equipo el entorno de /tmp desaparece: se recrea solo
echo "Preparando el entorno de Python (tras reiniciar el equipo, unos segundos)…"
if [ -f entorno_python.sh ]; then
bash entorno_python.sh
elif [ -f instalar.sh ]; then
bash instalar.sh
fi
elegir_python
if ! "$PY" -c "import requests, bs4" 2>/dev/null; then
echo "Faltan dependencias de Python y no se han podido instalar (mira los mensajes de arriba)."
read -r -p "Pulsa Enter para cerrar..."
exit 1
fi
"$PY" -c "import openpyxl" 2>/dev/null || echo "⚠ Falta openpyxl: la cartera funciona, pero «Exportar a Excel» no."
fi
DATOS=datos
for ((i = 1; i <= $#; i++)); do
if [ "${!i}" = "--datos" ]; then j=$((i + 1)); DATOS="${!j}"; fi
done
if [ ! -f "$DATOS/activos.jsonl" ]; then
# USB nuevo o datos perdidos: se pueden recuperar de la copia cifrada del servidor git
echo "No hay datos en «$DATOS/»."
read -r -p "¿Recuperarlos de la copia cifrada del servidor git? Hace falta la llave de seguridad. (s/N) " respuesta
case "$respuesta" in
s|S|si|sí|Si|Sí|SI) "$PY" -m cartera.restaurar --datos "$DATOS" || { read -r -p "Pulsa Enter para cerrar..."; exit 1; } ;;
*) read -r -p "Pulsa Enter para cerrar..."; exit 1 ;;
esac
fi
# Copia de seguridad de los datos y los ajustes en cada apertura (se conservan las 30 últimas)
mkdir -p backups
AJUSTES=""
for a in bitcoin.json extractos.json adjuntos.json; do
[ -f "$a" ] && AJUSTES="$AJUSTES $a"
done
# shellcheck disable=SC2086
if tar -czf "backups/datos-$(date +%Y%m%d-%H%M%S).tar.gz" --exclude=.cerrojo --exclude=.ultima_sesion.json --exclude=./adjuntos -C "$DATOS" . ${AJUSTES:+-C "$PWD"} $AJUSTES; then
ls -1t backups/datos-*.tar.gz 2>/dev/null | tail -n +31 | xargs -r rm -f
else
echo "⚠ No se pudo hacer la copia de seguridad de $DATOS (se abre igualmente)."
fi
"$PY" -m cartera.servidor "$@"
status=$?
if [ $status -ne 0 ]; then
read -r -p "Pulsa Enter para cerrar..."
fi
exit $status