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

SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
REPO_ROOT="$(cd "${SCRIPT_DIR}/../.." && pwd)"
ENV_FILE="${SCRIPT_DIR}/.env_hourly_config"
WRAPPER_PATH="${SCRIPT_DIR}/run_hourly_delta_to_s3.sh"

if [[ ! -f "${ENV_FILE}" ]]; then
  echo "[error] missing env file: ${ENV_FILE}" >&2
  echo "[hint] cp ${SCRIPT_DIR}/.env_hourly_config.example ${ENV_FILE}" >&2
  exit 1
fi

if [[ ! -x "${WRAPPER_PATH}" ]]; then
  echo "[error] wrapper is not executable: ${WRAPPER_PATH}" >&2
  echo "[hint] chmod +x ${WRAPPER_PATH}" >&2
  exit 1
fi

# shellcheck disable=SC1090
source "${ENV_FILE}"

: "${SF_HOURLY_CRON_SCHEDULE:=12 * * * *}"

CRON_CMD="cd ${REPO_ROOT} && /bin/bash ${WRAPPER_PATH}"
CRON_LINE="${SF_HOURLY_CRON_SCHEDULE} ${CRON_CMD}"

TMP_CRON="$(mktemp)"
trap 'rm -f "${TMP_CRON}"' EXIT

crontab -l 2>/dev/null | grep -Fv "${WRAPPER_PATH}" > "${TMP_CRON}" || true
printf '%s\n' "${CRON_LINE}" >> "${TMP_CRON}"
crontab "${TMP_CRON}"

echo "[ok] installed hourly delta cron"
echo "[ok] schedule=${SF_HOURLY_CRON_SCHEDULE}"
echo "[ok] command=${CRON_CMD}"
