#!/usr/bin/env bash # # Összeveti a scripts/repos.list klón listát a Gitea szerver tartalmával # (tea repo list --output json). # # - HIÁNYZIK: a szerveren létezik, de nincs a klón listában és a # repos.ignore-ban sem # - FELESLEG: a listában Gitea repóként szerepel, de a szerveren nincs # # Kilépési kód: 0, ha minden stimmel; 1, ha bármelyik listában van találat. set -euo pipefail SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)" LIST="$SCRIPT_DIR/repos.list" IGNORE="$SCRIPT_DIR/repos.ignore" GITEA_HOST="git.teletypegames.org" command -v tea >/dev/null 2>&1 || { echo "HIBA: nincs tea CLI. Futtasd: make tea" >&2 exit 1 } # Szerveren lévő repók: owner/name server=$(tea repo list --output json --limit 1000 | jq -r '.[] | .owner + "/" + .name' | sort) # A klón listában szereplő Gitea repók: owner/name a clone URL-ből listed=$(sed -nE "s#^[^|#]+\|ssh://git@${GITEA_HOST}:[0-9]+/(.+)\$#\1#p" "$LIST" | sed 's/\.git$//' | sort) # Szándékosan kihagyott repók ignored=$(sed -e 's/#.*//' -e '/^[[:space:]]*$/d' "$IGNORE" 2>/dev/null | sort || true) missing=$(comm -23 <(echo "$server") <(sort -u <(echo "$listed") <(echo "$ignored"))) stale=$(comm -13 <(echo "$server") <(echo "$listed")) status=0 if [ -n "$missing" ]; then echo "HIÁNYZIK a klón listából (a szerveren létezik):" echo "$missing" | sed 's/^/ - /' status=1 fi if [ -n "$stale" ]; then echo "FELESLEG a klón listában (a szerveren nincs):" echo "$stale" | sed 's/^/ - /' status=1 fi if [ "$status" -eq 0 ]; then echo "OK: a klón lista lefedi a szerver mind a(z) $(echo "$server" | wc -l | tr -d ' ') repóját ($(echo "$ignored" | grep -c . || true) szándékosan kihagyva)." fi exit "$status"