Uecko_ERP_FactuGES_sync/scripts/deploy-cron.sh

78 lines
2.2 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
SCRIPT_VERSION="1.0"
# ================================================
# FACTUGES SYNC - Deploy cron jobs (MULTI COMPANY)
# -----------------------------------------------
# Este script:
# - Lee la lista de compañías desde companies.list
# - Genera automáticamente los CRON de cada compañía
# - Instala un CRON único con todas las compañías
# - Crea directorios de logs por compañía
# ================================================
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
COMPANIES_FILE="${SCRIPT_DIR}/companies.list"
if [[ ! -f "$COMPANIES_FILE" ]]; then
echo "❌ ERROR: No existe ${COMPANIES_FILE}"
exit 1
fi
CRON_FILE="/tmp/factuges-sync-cron-all.txt"
echo ""
echo "-------------------------------------------------------"
echo " FACTUGES SYNC - Deploy cron jobs (MULTI COMPANY) v${SCRIPT_VERSION}"
echo "-------------------------------------------------------"
echo ""
echo "📄 Generando CRON multi-compañía..."
echo "" > "$CRON_FILE"
while read -r COMPANY; do
[[ -z "$COMPANY" ]] && continue # saltar líneas vacías
[[ "$COMPANY" == \#* ]] && continue # saltar comentarios
LOG_DIR="/var/log/factuges-sync/${COMPANY}"
echo "→ Añadiendo compañía: ${COMPANY}"
echo " Logs en: ${LOG_DIR}"
# Crear directorio de logs por compañía
sudo mkdir -p "$LOG_DIR"
cat >> "$CRON_FILE" <<EOF
# ===== FACTUGES SYNC JOBS (${COMPANY}) =====
# Sincronización FactuGES (cada 5 min)
*/5 * * * * docker run --rm \
-e ENV=prod \
factuges-sync-factuges:${COMPANY}-latest \
>> ${LOG_DIR}/factuges.log 2>&1
# Sincronización Verifactu (cada 7 min)
*/7 * * * * docker run --rm \
-e ENV=prod \
factuges-sync-verifactu:${COMPANY}-latest \
>> ${LOG_DIR}/verifactu.log 2>&1
EOF
done < "$COMPANIES_FILE"
echo "📥 Instalando CRON final..."
sudo crontab "$CRON_FILE"
echo ""
echo "---------------------------------------------"
echo "🎯 CRON multi-compañía instalado correctamente"
echo "✔ companies.list leído desde: ${COMPANIES_FILE}"
echo "✔ Ver crontab: sudo crontab -l"
echo "✔ Logs: /var/log/factuges-sync/<company>/"
echo "🧩 Script version: ${SCRIPT_VERSION}"
echo "---------------------------------------------"
echo ""