Files
vuln-bsi/scripts/run-cached.sh
T
2026-11-10 21:44:49 +01:00

47 lines
1.5 KiB
Bash

#!/usr/bin/env bash
set -Eeuo pipefail
umask 077
: "${GITEA_JOB_TOKEN:?GITEA job token missing}"
CACHE_ROOT="${CACHE_ROOT:-/var/lib/act_runner/cache/vuln-bsi}"
REPO_URL="${REPO_URL:-https://git.apex-project.de/VULN/vuln-bsi.git}"
mkdir -p "$CACHE_ROOT"
exec 9>"$CACHE_ROOT/.sync.lock"
flock -w 300 9 || { echo 'Another mirror run holds the lock' >&2; exit 1; }
ASKPASS_FILE="$(mktemp "$CACHE_ROOT/.askpass.XXXXXX")"
cleanup() { rm -f "$ASKPASS_FILE"; }
trap cleanup EXIT
cat > "$ASKPASS_FILE" <<'EOF'
#!/bin/sh
case "$1" in
*Username*) printf '%s\n' 'oauth2' ;;
*Password*) printf '%s\n' "$GITEA_JOB_TOKEN" ;;
esac
EOF
chmod 700 "$ASKPASS_FILE"
export GIT_ASKPASS="$ASKPASS_FILE" GIT_TERMINAL_PROMPT=0
export GIT_CONFIG_NOSYSTEM=0
if [[ ! -d "$CACHE_ROOT/repo/.git" ]]; then
git clone --depth 1 --branch main "$REPO_URL" "$CACHE_ROOT/repo"
fi
cd "$CACHE_ROOT/repo"
# Never overwrite a previous interrupted sync silently.
if [[ -n "$(git status --porcelain)" ]]; then
echo 'Cached working tree is dirty. Inspect/recover it before retrying.' >&2
exit 1
fi
git remote set-url origin "$REPO_URL"
git fetch --depth 1 origin main
git checkout main
git merge --ff-only FETCH_HEAD
python3 scripts/sync.py --since-year 2017 --refresh-old 300
python3 scripts/validate.py
git config user.name 'Vulnerability Bot'
git config user.email 'vulnerability-bot@users.noreply.local'
git add -A data state
if git diff --cached --quiet; then
echo 'No changes to commit'
exit 0
fi
git commit -m "Update BSI WID CSAF $(date -u +%Y-%m-%dT%H:%M:%SZ)"
git push origin HEAD:main