#!/usr/bin/env bash set -euo pipefail CONFIG_FILE="/opt/appfactory/config/appfactory.env" source "$CONFIG_FILE" echo "Recreating Gitea webhooks" echo "Org: $GITEA_ORG" echo "URL: $WEBHOOK_INTERNAL_URL" echo "" repos_json="$(curl -sS \ "$GITEA_URL/api/v1/orgs/$GITEA_ORG/repos?limit=1000" \ -H "Authorization: token $GITEA_TOKEN")" repo_names="$(echo "$repos_json" | jq -r '.[].name')" for repo in $repo_names; do echo "Repository: $repo" hooks_json="$(curl -sS \ "$GITEA_URL/api/v1/repos/$GITEA_ORG/$repo/hooks" \ -H "Authorization: token $GITEA_TOKEN")" echo "$hooks_json" | jq -r '.[] | select(.type == "gitea") | .id' | while read -r hook_id; do if [ -n "$hook_id" ] && [ "$hook_id" != "null" ]; then echo " Deleting old hook ID: $hook_id" curl -sS -X DELETE \ "$GITEA_URL/api/v1/repos/$GITEA_ORG/$repo/hooks/$hook_id" \ -H "Authorization: token $GITEA_TOKEN" >/dev/null || true fi done echo " Creating fresh hook" payload="$(jq -n \ --arg url "$WEBHOOK_INTERNAL_URL" \ --arg secret "$WEBHOOK_SECRET" \ '{ type: "gitea", active: true, events: ["push"], config: { url: $url, content_type: "json", secret: $secret } }')" curl -sS -X POST \ "$GITEA_URL/api/v1/repos/$GITEA_ORG/$repo/hooks" \ -H "Authorization: token $GITEA_TOKEN" \ -H "Content-Type: application/json" \ -d "$payload" >/dev/null done echo "" echo "DONE"