diff --git a/.github/workflows/sync-to-gitea.yml b/.github/workflows/sync-to-gitea.yml index 03455d6..519dee5 100644 --- a/.github/workflows/sync-to-gitea.yml +++ b/.github/workflows/sync-to-gitea.yml @@ -46,6 +46,35 @@ jobs: fi done + if [ -z "$TARGET_URL" ]; then + echo "Owner guess failed; searching accessible repos via Gitea API" + API_URL="https://${GITEA_HOST}/api/v1/repos/search?q=${REPO_NAME}&limit=100" + TARGET_URL=$(python3 - <<'PY' +import json +import os +import urllib.request + +api_url = os.environ["API_URL"] +token = os.environ["GITEA_TOKEN"] +repo_name = os.environ["REPO_NAME"] +username = os.environ["GITEA_USERNAME"] + +req = urllib.request.Request(api_url, headers={"Authorization": f"token {token}"}) +with urllib.request.urlopen(req, timeout=20) as resp: + data = json.loads(resp.read().decode("utf-8")) + +for repo in data.get("data", []): + full_name = str(repo.get("full_name", "")) + if full_name.lower().endswith("/" + repo_name.lower()): + print(f"https://{username}:{token}@{os.environ['GITEA_HOST']}/{full_name}.git") + break +PY +) + if [ -n "$TARGET_URL" ]; then + echo "Resolved Gitea target via API" + fi + fi + if [ -z "$TARGET_URL" ]; then echo "Could not access target repo on Gitea for owners: $CANDIDATE_OWNERS" exit 1