#!/usr/bin/env bash

set -euo pipefail

: "${COVERAGE_BUCKET:?COVERAGE_BUCKET is required}"
: "${COVERAGE_MANIFEST_KEY:?COVERAGE_MANIFEST_KEY is required}"
: "${MINIO_ENDPOINT:?MINIO_ENDPOINT is required}"

if [[ "${GITHUB_EVENT_NAME}" != "schedule" ]]; then
    echo "run=true" >> "$GITHUB_OUTPUT"
    exit 0
fi

set +e
head_object_result=$(aws s3api head-object \
    --bucket "${COVERAGE_BUCKET}" \
    --key "${COVERAGE_MANIFEST_KEY}" \
    --endpoint-url "${MINIO_ENDPOINT}" \
    2>&1)
head_object_exit=$?
set -e

if [[ ${head_object_exit} -eq 0 ]]; then
    echo "run=false" >> "$GITHUB_OUTPUT"
    echo "Coverage manifest ${COVERAGE_MANIFEST_KEY} already exists. Skipping scheduled run."
elif echo "${head_object_result}" | grep -qiE "NoSuchKey|404|Not Found"; then
    echo "run=true" >> "$GITHUB_OUTPUT"
else
    echo "Error checking manifest existence: ${head_object_result}" >&2
    exit 1
fi
