| 1 |
|
| 2 |
|
| 3 |
|
| 4 |
|
| 5 |
|
| 6 |
|
| 7 |
|
| 8 |
|
| 9 |
|
| 10 |
|
| 11 |
|
| 12 |
|
| 13 |
set -eu |
| 14 |
[ "${NO_CHANGELOG:-}" = 1 ] && exit 0 |
| 15 |
cd "$(dirname "$0")/.." |
| 16 |
if [ "$#" -gt 0 ]; then |
| 17 |
paths=$(printf '%s\n' "$@") |
| 18 |
else |
| 19 |
paths=$(oxy --plain status --json | python3 -c 'import json,sys; print("\n".join(p["path"] for p in json.load(sys.stdin)["paths"]))') |
| 20 |
fi |
| 21 |
code=$(printf '%s\n' "$paths" | grep -E '^(src|crates|templates|assets|packaging|images|scripts)/' | grep -vE '(^|/)tests?/|_test\.rs$' || true) |
| 22 |
[ -z "$code" ] && exit 0 |
| 23 |
printf '%s\n' "$paths" | grep -qx 'CHANGELOG.md' && exit 0 |
| 24 |
echo "changelog: these changes touch code but CHANGELOG.md has no new line under ## Unreleased:" >&2 |
| 25 |
printf '%s\n' "$code" | sed 's/^/ /' >&2 |
| 26 |
echo "add one (Added / Changed / Fixed / Security, with the issue number), or set NO_CHANGELOG=1 if users won't notice" >&2 |
| 27 |
exit 1 |