#!/usr/bin/env bash
set -euo pipefail

PIPELINE_DIR="$(cd "$(dirname "$0")" && pwd)"
LOCK_FILE="${PIPELINE_DIR}/.pipeline.lock"
LOG_DIR="${PIPELINE_DIR}/logs"

mkdir -p "$LOG_DIR"

# Rotate: keep last 7 days of logs
find "$LOG_DIR" -name "*.log" -mtime +7 -delete 2>/dev/null || true

LOG_FILE="${LOG_DIR}/$(date +%Y-%m-%d).log"

exec >> "$LOG_FILE" 2>&1

echo "=== $(date -Iseconds) === Starting pipeline run ==="

# flock -n: non-blocking, exit immediately if another run holds the lock
exec 200>"$LOCK_FILE"
if ! flock -n 200; then
    echo "Another pipeline run is in progress, skipping."
    exit 0
fi

cd "$PIPELINE_DIR"
"${PIPELINE_DIR}/.venv/bin/python3" vm_pipeline.py

echo "=== $(date -Iseconds) === Pipeline run finished ==="
