Files
breadcrumb-the-shire/bin/docs-drift-check.sh

57 lines
1.6 KiB
Bash
Raw Normal View History

#!/usr/bin/env bash
set -euo pipefail
script_dir="$(cd -- "$(dirname -- "${BASH_SOURCE[0]}")" && pwd)"
repo_root="$(cd -- "${script_dir}/.." && pwd)"
cd "${repo_root}"
scan_targets=(README.md CLAUDE.md docs .agents)
scan_globs=(-g '*.md' -g '*.json' -g '!.agents/runs/**')
fail=0
check_legacy_pattern() {
local pattern="$1"
local label="$2"
local matches
matches="$(rg -n --pcre2 "${pattern}" "${scan_targets[@]}" "${scan_globs[@]}" || true)"
if [[ -n "${matches}" ]]; then
echo "[FAIL] ${label}"
echo "${matches}"
fail=1
fi
}
check_legacy_pattern 'config/settings\.php' 'Legacy docs reference to config/settings.php found'
check_legacy_pattern 'config/router\.php' 'Legacy docs reference to config/router.php found'
check_legacy_pattern '\bAPP_ROUTE_DEFINITIONS\b' 'Legacy docs reference to APP_ROUTE_DEFINITIONS found'
check_legacy_pattern '\bAPP_PUBLIC_PATHS\b' 'Legacy docs reference to APP_PUBLIC_PATHS found'
check_legacy_pattern 'data-search-key' 'Legacy global-search aside marker (data-search-key) found'
if [[ ! -f config/config.php.example ]]; then
echo "[FAIL] Missing setup template: config/config.php.example"
fail=1
fi
required_setup_docs=(
README.md
docs/howto-docker-lokal.md
docs/tutorial-01-erste-schritte.md
docs/tutorial-03-setup-und-erster-login.md
docs/howto-lokale-entwicklung.md
)
for doc in "${required_setup_docs[@]}"; do
if ! rg -q 'config/config\.php\.example' "${doc}"; then
echo "[FAIL] Missing setup contract reference in ${doc}: config/config.php.example"
fail=1
fi
done
if [[ ${fail} -ne 0 ]]; then
echo "[FAIL] docs drift checks failed"
exit 1
fi
echo "[OK] docs drift checks passed"