#!/usr/bin/env bash # Shared helpers for the Gitea-backed plan-execution queue. set -euo pipefail GITEA_URL="https://gitea.dohertylan.com" GITEA_REPO="dohertj2/lmxopcua" GITEA_API="$GITEA_URL/api/v1" if [ -z "${GITEA_TOKEN:-}" ]; then TEA_CONFIG="${LOCALAPPDATA:-$HOME/AppData/Local}/tea/config.yml" if [ ! -f "$TEA_CONFIG" ]; then TEA_CONFIG="$HOME/.config/tea/config.yml" fi GITEA_TOKEN="$(awk '/token:/{gsub(/[ \t]/,"",$2); print $2; exit}' "$TEA_CONFIG" 2>/dev/null || true)" fi if [ -z "${GITEA_TOKEN:-}" ]; then echo "lib.sh: GITEA_TOKEN not set and tea config not readable" >&2 exit 1 fi export GITEA_TOKEN INTEGRATION_BRANCH="auto/driver-gaps" QUEUE_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && { pwd -W 2>/dev/null || pwd; })" REPO_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && { pwd -W 2>/dev/null || pwd; })" MANIFEST="$QUEUE_ROOT/pr-manifest.yaml" LABEL_MAP="$QUEUE_ROOT/.label-ids.json" LABEL_QUEUED="queue/queued" LABEL_IN_PROGRESS="queue/in-progress" LABEL_BLOCKED="queue/blocked" LABEL_FAILED="queue/failed" LABEL_DONE="queue/done" LABEL_AUTO="auto-managed" LABEL_CROSS="cross-driver" api() { local method="$1" path="$2" data="${3:-}" if [ -n "$data" ]; then curl -sf -X "$method" \ -H "Authorization: token $GITEA_TOKEN" \ -H "Content-Type: application/json" \ -d "$data" \ "$GITEA_API/$path" else curl -sf -X "$method" \ -H "Authorization: token $GITEA_TOKEN" \ "$GITEA_API/$path" fi } api_repo() { api "$1" "repos/$GITEA_REPO/$2" "${3:-}" } label_id() { python -c "import json,sys; m=json.load(open('$LABEL_MAP')); print(m['$1'])" }