#!/usr/bin/env bash set -Eeuo pipefail umask 077 : "${GITEA_TOKEN:?GITEA_TOKEN fehlt}" CACHE_ROOT="${CACHE_ROOT:-/var/lib/act_runner/cache/vuln-debian}" REPO_URL="${REPO_URL:-https://git.apex-project.de/VULN/vuln-debian.git}" mkdir -p "$CACHE_ROOT" exec 9>"$CACHE_ROOT/.sync.lock" flock -w 300 9 || { echo 'Ein anderer Lauf ist noch aktiv' >&2; exit 1; } # Credentials are supplied only on demand; never embedded in the remote URL. ASKPASS="$(mktemp)" trap 'rm -f "$ASKPASS"' EXIT cat > "$ASKPASS" <<'EOF' #!/bin/sh case "$1" in *Username*) printf 'oauth2\n' ;; *Password*) printf '%s\n' "$GITEA_TOKEN" ;; *) exit 1 ;; esac EOF chmod 700 "$ASKPASS" export GIT_ASKPASS="$ASKPASS" GIT_TERMINAL_PROMPT=0 if [[ ! -d "$CACHE_ROOT/repo/.git" ]]; then git clone --depth 1 --branch main "$REPO_URL" "$CACHE_ROOT/repo" fi cd "$CACHE_ROOT/repo" git remote set-url origin "$REPO_URL" git fetch --depth 1 origin main git reset --hard FETCH_HEAD python3 scripts/sync.py python3 scripts/validate.py git add data/tracker.json state/sync.json if git diff --cached --quiet; then echo 'Keine neuen Daten für Commit'; exit 0 fi git config user.name 'Vulnerability Bot' git config user.email 'vulnerability-bot@users.noreply.local' git commit -m "Debian Security Tracker update $(date -u +%FT%TZ)" git push origin HEAD:main