ci: reject golden filenames on matching PRs

This commit is contained in:
Tianyi Cui
2026-07-19 21:24:42 +08:00
parent 546f2ae478
commit b7cdad6360
2 changed files with 47 additions and 0 deletions
+21
View File
@@ -0,0 +1,21 @@
name: Expected filenames
on:
pull_request:
paths:
- '*[gG][oO][lL][dD][eE][nN]*'
- '**/*[gG][oO][lL][dD][eE][nN]*'
- '!vendor/**'
permissions:
contents: read
jobs:
expected-filenames:
name: no golden filenames
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- name: Check tracked filenames
run: scripts/check-expected-filenames.sh
+26
View File
@@ -0,0 +1,26 @@
#!/usr/bin/env bash
set -euo pipefail
# Vendored upstream paths follow vendor/README.md instead of repository naming policy.
root=$(git rev-parse --show-toplevel)
candidate_file=$(mktemp)
trap 'unlink "$candidate_file"' EXIT
git -C "$root" ls-files -z -- \
':(icase,glob)*golden*' \
':(icase,glob)**/*golden*' \
':(exclude,glob)vendor/**' > "$candidate_file"
violations=()
while IFS= read -r -d '' path; do
violations+=("$path")
done < "$candidate_file"
if (( ${#violations[@]} == 0 )); then
echo 'check-expected-filenames: no tracked non-vendor filename contains "golden".'
exit 0
fi
echo 'check-expected-filenames: tracked non-vendor filenames must not contain "golden":' >&2
printf ' %s\n' "${violations[@]}" >&2
echo 'Rename each file with an accurate term such as "expected".' >&2
exit 1