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

PROJECT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
PYTHON_BIN="${PYTHON_BIN:-$PROJECT_DIR/venv/bin/python3}"
DBT_BIN="${DBT_EXECUTABLE:-$PROJECT_DIR/venv/bin/dbt}"
SCHEDULE="${ANALYTICS_CRON_SCHEDULE:-*/15 * * * *}"
CRON_MARKER_BEGIN="# strategist-ai analytics refresh begin"
CRON_MARKER_END="# strategist-ai analytics refresh end"
CRON_LINE="$SCHEDULE mkdir -p \"$PROJECT_DIR/scripts/logs\" && cd \"$PROJECT_DIR\" && DBT_EXECUTABLE=\"$DBT_BIN\" \"$PYTHON_BIN\" scripts/cron_analytics_refresh.py >> \"$PROJECT_DIR/scripts/logs/cron_stdout.log\" 2>&1"

if [[ ! -x "$PYTHON_BIN" ]]; then
  echo "Python executable not found or not executable: $PYTHON_BIN" >&2
  exit 1
fi

if [[ ! -x "$DBT_BIN" ]]; then
  echo "dbt executable not found or not executable: $DBT_BIN" >&2
  exit 1
fi

tmp_file="$(mktemp /tmp/strategist-ai-analytics-cron.XXXXXX)"
existing_file="$(mktemp /tmp/strategist-ai-analytics-existing-cron.XXXXXX)"
cleanup() {
  rm -f "$tmp_file" "$existing_file"
}
trap cleanup EXIT

crontab -l > "$existing_file" 2>/dev/null || true
awk -v begin="$CRON_MARKER_BEGIN" -v end="$CRON_MARKER_END" '
  $0 == begin { skip = 1; next }
  $0 == end { skip = 0; next }
  skip != 1 { print }
' "$existing_file" > "$tmp_file"

{
  echo "$CRON_MARKER_BEGIN"
  echo "$CRON_LINE"
  echo "$CRON_MARKER_END"
} >> "$tmp_file"

crontab "$tmp_file"
echo "Installed analytics refresh cron:"
echo "$CRON_LINE"
