#!/bin/bash set -euo pipefail log() { printf '%s\n' "$*" >&2 } fail() { log "ERROR: $*" exit 1 } resolve_token() { local source_name env_value local sources=( "inputs.RUNNER_TOKEN:INPUT_RUNNER_TOKEN" "secrets.GITEA_TOKEN:GITEA_TOKEN" "secrets.RUNNER_TOKEN:RUNNER_TOKEN_SECRET" ) for source in "${sources[@]}"; do source_name="${source%%:*}" env_value="${source#*:}" log "Trying token from ${source_name}" if [[ -n "${!env_value:-}" ]]; then log "Using token from ${source_name}" printf '%s' "${!env_value}" return 0 fi log "Token not found in ${source_name}, trying next source" done return 1 } resolve_keep_versions() { local raw_value="${INPUT_KEEP_VERSIONS:-2}" if [[ -z "${raw_value}" ]]; then raw_value="2" fi if [[ ! "${raw_value}" =~ ^[0-9]+$ ]]; then fail "Invalid keep_versions: ${raw_value}" fi printf '%s' "${raw_value}" } main() { local token keep_versions log "Gitea Server Url: ${GITEA_SERVER_URL:-}" log "Gitea Repository: ${GITEA_REPOSITORY:-}" if ! token="$(resolve_token)"; then fail "No Gitea token available, exiting" fi export RESOLVED_GITEA_TOKEN="$token" keep_versions="$(resolve_keep_versions)" log "keep_versions=${keep_versions}" log "Token source resolved successfully" log "Stage 2 complete" } main "$@"