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

# ========== config ==========
PY="/sca/compilers_and_tools/python/miniforge3/bin/python"
SCRIPT="/station/instruments/disdrodb/parsivel_daily_terrace_with_fill_value.py"

IN_DIR="/instruments/TERRACE/UNBC_Rooftop/parsivel"
OUT_DIR="/station/instruments/disdrodb/PAR_UNBC_TERRACE"

LOG="/station/instruments/disdrodb/cron_parsivel_terrace.log"
LOCK="/tmp/parsivel_terrace.lock"
FLAGS="--fast-skip"   # add extras like: --force-last-n-days 2
# ============================

mkdir -p "$(dirname "$LOG")"
# Log header
{
  echo "=== $(date -Is) START (terrace) ==="
  echo "[run] script: $SCRIPT"
  echo "[run] in    : $IN_DIR"
  echo "[run] out   : $OUT_DIR"
} >>"$LOG"

# Optional: rotate log if > 10 MB
if [ -f "$LOG" ] && [ "$(stat -c%s "$LOG")" -gt $((10*1024*1024)) ]; then
  mv -f "$LOG" "${LOG%.*}_$(date +%Y%m%d_%H%M%S).log" || true
  : > "$LOG"
fi

# Append all stdout/stderr to log from here on
exec >>"$LOG" 2>&1

# Load shared module (harmless no-op if not present)
if command -v module >/dev/null 2>&1; then
  module load python3/miniforge3 || true
fi

# Use a lock to avoid overlapping runs
{
  flock -n 9 || { echo "[skip] another run is in progress (lock: $LOCK)"; exit 0; }

  # Ensure user-site packages are allowed (some clusters block them)
  unset PYTHONNOUSERSITE PYTHONPATH

  # Sanity check: netCDF4 + interpreter path
  "$PY" -c 'import netCDF4, sys; print("[ok] netCDF4:", netCDF4.__version__, "| python:", sys.executable)'

  # Execute
  "$PY" "$SCRIPT" \
    --in-dir "$IN_DIR" \
    --out-dir "$OUT_DIR" \
    $FLAGS

} 9>"$LOCK"

echo "=== $(date -Is) END (terrace) ==="

