71 lines
2.8 KiB
Bash
Executable file
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
|