Files
2026-06-05 21:21:30 +02:00

42 lines
1.4 KiB
Bash

#!/bin/bash
# ============================================================================
# Wrapper for the email pipeline. Calls Python wrapper inside python-runner
# container. Logs to dated file. Cleans up logs older than 30 days.
#
# Install via User Scripts plugin or /etc/cron.d/email_pipeline:
# 0 6,18 * * * /mnt/user/Scripts/run_pipeline.sh
# ============================================================================
set -u
LOG_DIR="/mnt/user/Scripts/logs"
TIMESTAMP=$(date +%Y%m%d_%H%M)
LOG_FILE="${LOG_DIR}/pipeline_${TIMESTAMP}.log"
LATEST_LINK="${LOG_DIR}/pipeline_latest.log"
RETENTION_DAYS=30
mkdir -p "$LOG_DIR"
echo "=== Email pipeline run @ $(date '+%Y-%m-%d %H:%M:%S') ===" >> "$LOG_FILE"
# Make sure the container is running
if ! docker inspect -f '{{.State.Running}}' python-runner 2>/dev/null | grep -q true; then
echo "ERROR: python-runner container is not running" >> "$LOG_FILE"
docker start python-runner >> "$LOG_FILE" 2>&1 || exit 1
sleep 5
fi
docker exec python-runner python /scripts/0_run_pipeline_v1.0.py --quiet >> "$LOG_FILE" 2>&1
RET=$?
echo "" >> "$LOG_FILE"
echo "=== Wrapper finished @ $(date '+%Y-%m-%d %H:%M:%S') exit=$RET ===" >> "$LOG_FILE"
# Update "latest" symlink for easy tailing
ln -sf "$LOG_FILE" "$LATEST_LINK"
# Cleanup logs older than RETENTION_DAYS
find "$LOG_DIR" -name 'pipeline_*.log' -type f -mtime +${RETENTION_DAYS} -delete
exit $RET