#!/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