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

script_dir="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)"

log_progress() {
    printf '[flaky-governance] %s %s\n' "$(date -u '+%Y-%m-%dT%H:%M:%SZ')" "$1" >&2
}

fail_preflight() {
    printf '%s\n' "flaky governance failed: $1" >&2
    printf '%s\n' '{"comments":0,"conflicts":0,"creates":0,"detected_occurrences":0,"downloaded_artifacts":0,"exit_code":1,"noops":0,"rejected_artifacts":0,"reopens":0,"scanned_runs":0}'
    exit 1
}

unset GH_TOKEN GITHUB_TOKEN
log_progress "starting (args: $*)"
if [[ -f "${script_dir}/.env" ]]; then
    log_progress "loading configuration from .env"
    set -a
    # shellcheck source=/dev/null
    source "${script_dir}/.env"
    set +a
    log_progress "configuration loaded"
else
    log_progress "no .env found; using inherited configuration"
fi

state_dir="${FLAKY_GOVERNANCE_STATE_DIR:-${script_dir}/.state}"
log_progress "preparing state directory"
mkdir -p -- "${state_dir}"
exec 9>"${state_dir}/run.lock"
if ! flock -n 9; then
    log_progress "skipping: another invocation holds the lock"
    printf '%s\n' 'flaky governance skipped: another invocation holds the lock'
    printf '%s\n' '{"comments":0,"conflicts":0,"creates":0,"detected_occurrences":0,"downloaded_artifacts":0,"exit_code":0,"noops":0,"rejected_artifacts":0,"reopens":0,"scanned_runs":0}'
    exit 0
fi
log_progress "acquired run lock"

if [[ -n "${GITHUB_TOKEN:-}" ]]; then
    log_progress "using token authentication from .env"
    export GH_TOKEN="${GITHUB_TOKEN}"
    unset GITHUB_TOKEN
else
    log_progress "checking stored GitHub CLI authentication"
    unset GH_TOKEN GITHUB_TOKEN
    command -v gh >/dev/null 2>&1 || fail_preflight 'GitHub CLI is not installed'
    gh auth status --hostname github.com >/dev/null 2>&1 || fail_preflight 'GitHub CLI authentication is unavailable'
    log_progress "stored GitHub CLI authentication is ready"
fi

log_progress "starting Python governance pipeline"
exec python3 "${script_dir}/flaky_governance.py" "$@"
