#!/usr/bin/env bash # tooling/pr-watchlist-diff — list watch-list files changed # between and . # # Used by /pr-process step 4a (T-858) to decide whether `make regen-db` must # run before push. The stamped generator sources come from the shared # registry tooling/generator_sources.py (T-1067) — imported live here so this # list can't drift from the stamp writer / tooling/check-systems-db-stamp. # # The extra hardcoded paths below are non-stamped watch items: the surviving # one-time planet-gen importers (import_heightmaps.py, import_province_ # boundaries.py — not part of `make regen-db`, but their data feeds the # committed DB), the schema DDL (stamped separately via schema_sha), and the # wiki data directories that feed the generators. set -euo pipefail BASE="${1:?usage: tooling/pr-watchlist-diff }" HEAD="${2:?usage: tooling/pr-watchlist-diff }" # Load the registry via plain assignment (set -e sees its failure), not # `mapfile < <(...)` — a failed process substitution is invisible to set -e # and would silently yield an empty watch list, disabling the DB-staleness # net exactly when the shared registry breaks. Guard the empty case too. SOURCES_RAW="$(python3 tooling/generator_sources.py --list)" if [ -z "$SOURCES_RAW" ]; then echo "pr-watchlist-diff: generator_sources.py --list returned nothing" >&2 exit 1 fi mapfile -t GENERATOR_SOURCES <<< "$SOURCES_RAW" git diff --name-only "$BASE...$HEAD" -- \ "${GENERATOR_SOURCES[@]}" \ tooling/planet-gen/import_heightmaps.py \ tooling/planet-gen/import_province_boundaries.py \ server/data/systems-schema.sql \ wiki/star-systems/ \ wiki/economics/