Files
vuln-debian/scripts/run-cached.sh
T
2026-11-10 21:52:04 +01:00

40 lines
1.3 KiB
Bash

#!/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