Files
LumaOps-Public/scripts/openrgb-upstream-guard.sh
T

68 lines
2.2 KiB
Bash

#!/usr/bin/env bash
set -euo pipefail
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
cd "$ROOT_DIR"
BASELINE_TAG="${OPENRGB_BASELINE_TAG:-upstream-openrgb-1.0rc3}"
UPSTREAM_REMOTE="${OPENRGB_UPSTREAM_REMOTE:-upstream}"
PUBLIC_BASELINE_TAG="public-release-baseline"
if [ "${OPENRGB_FETCH_UPSTREAM:-0}" = "1" ]; then
echo "[INFO] Fetch upstream remote '$UPSTREAM_REMOTE'..."
git fetch "$UPSTREAM_REMOTE" --tags --prune
fi
if ! git rev-parse --verify --quiet "${BASELINE_TAG}^{commit}" >/dev/null 2>&1; then
if git rev-parse --verify --quiet "${PUBLIC_BASELINE_TAG}^{commit}" >/dev/null 2>&1; then
BASELINE_TAG="$PUBLIC_BASELINE_TAG"
echo "[INFO] Publieke releasebaseline wordt gebruikt."
else
echo "[ERROR] Geen upstream- of publieke baseline-tag gevonden."
exit 1
fi
fi
if [ "$BASELINE_TAG" != "$PUBLIC_BASELINE_TAG" ] && ! git remote | grep -Fxq "$UPSTREAM_REMOTE"; then
echo "[ERROR] Remote '${UPSTREAM_REMOTE}' ontbreekt. Voeg upstream eerst toe of zet OPENRGB_UPSTREAM_REMOTE."
exit 1
fi
mapfile -t CHANGED_FILES < <(git diff --name-only "${BASELINE_TAG}..HEAD")
if [ ${#CHANGED_FILES[@]} -eq 0 ]; then
echo "[INFO] Geen verschillen t.o.v. baseline '${BASELINE_TAG}'."
exit 0
fi
declare -a UNEXPECTED_FILES=()
for file in "${CHANGED_FILES[@]}"; do
allowed=0
case "$file" in
.dockerignore|.env.example|.gitleaks.toml|.gitignore|Dockerfile|README.md|SECURITY.md|docker-compose*.yml|docker-compose*.yaml|startup/main_FreeBSD_Linux_MacOS.cpp|ResourceManager.cpp|ResourceManager.h|.github/*|.gitea/*)
allowed=1
;;
docs/*|lumaops/*|docker/*|scripts/*)
allowed=1
;;
esac
if [ "$allowed" -eq 0 ]; then
UNEXPECTED_FILES+=("$file")
fi
done
if [ ${#UNEXPECTED_FILES[@]} -gt 0 ]; then
echo "[ERROR] Verandering gevonden buiten de beoogde fork-patchset:"
for file in "${UNEXPECTED_FILES[@]}"; do
echo " - $file"
done
echo "[HINT] Voeg tijdelijke kernaanpassingen alleen toe met expliciete uitzonderingen in deze script/handleiding."
exit 1
fi
echo "[OK] Alleen geautoriseerde wijzigingen t.o.v. baseline '${BASELINE_TAG}'."
echo "[OK] Upstream-patchgrens blijft schoon."