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

if [ "$#" -lt 1 ]; then
  echo "usage: extract-runner <python-module> [args...]" >&2
  exit 2
fi

export UV_PROJECT_ENVIRONMENT="${UV_PROJECT_ENVIRONMENT:-/tmp/pingcap-datalake-extract-venv}"
SOURCE_ROOT="${DATALAKE_AIRFLOW_REPO_ROOT:-/opt/datalake}"
DATALAKE_ROOT="${DATALAKE_EXTRACT_WORKSPACE:-${SOURCE_ROOT}}"
ARGS=("$@")

if [ "${DATALAKE_ROOT}" != "${SOURCE_ROOT}" ]; then
  mkdir -p "${DATALAKE_ROOT}"
  rsync -a --delete \
    --exclude ".git" \
    --exclude ".venv" \
    --exclude "orchestration/airflow/logs" \
    --exclude "*/runs/***" \
    "${SOURCE_ROOT}/" \
    "${DATALAKE_ROOT}/"
  export DATALAKE_AIRFLOW_REPO_ROOT="${DATALAKE_ROOT}"
fi

cd "${DATALAKE_ROOT}"

UV_ARGS=(run --project "${DATALAKE_ROOT}")
if [ -f "${DATALAKE_ROOT}/.env" ]; then
  UV_ARGS+=(--env-file "${DATALAKE_ROOT}/.env")
fi

uv "${UV_ARGS[@]}" \
  -- \
  python -m "${ARGS[@]}"
