mirror of
https://github.com/kuhyx/steam-backlog-enforcer.git
synced 2026-11-10 20:27:03 +01:00
Vendors ~/utils/file_length into scripts/file_length so the gate is reachable in CI: pre-commit's `entry:` is not shell-expanded and GitHub runners have no ~/utils, so an external reference would pass locally and silently skip on push. The existing pre-commit/action all-files job picks the hook up with no workflow change. The vendored copy is excluded from ruff/ruff-format/mypy/pylint and must stay byte-identical to upstream -- ruff --unsafe-fixes otherwise rewrites its print() calls to `pass` (T201/F841), which leaves the gate exiting 1 while reporting nothing. Also: - name-tests-test now exempts tests/_*.py, so the 35 test-file splits have a landing zone for shared helpers (it rejects any non-test_*.py module under tests/). - pylint max-module-lines 1000 -> 250, so both limits agree. Note: .git/hooks/pre-commit was never installed in this repo (only pre-push), so no commit-stage hook had ever run. Installed via `pre-commit install`. 55 files are currently over the cap; they are split in following commits. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01PPpmMpTSkp8UziRc5u8B7P
41 lines
1.3 KiB
Bash
Executable File
41 lines
1.3 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# ============================================================================
|
|
# Fail if any file exceeds the shared 250-line cap.
|
|
#
|
|
# A file that cannot be read in one piece forces re-reads and partial edits,
|
|
# which is the largest avoidable cost in an LLM-assisted workflow. The cap
|
|
# applies to code AND prose; generated files, markup and data are exempt.
|
|
#
|
|
# This is a VENDORED copy of ~/utils/file_length/. It is vendored rather than
|
|
# referenced because pre-commit's `entry:` is not shell-expanded and CI
|
|
# runners have no ~/utils -- an external reference would pass locally and
|
|
# silently skip on push.
|
|
#
|
|
# Usage:
|
|
# scripts/check_file_length.sh <file> [<file> ...] # pre-commit passes these
|
|
# scripts/check_file_length.sh --all # whole tree, from cwd
|
|
# ============================================================================
|
|
|
|
set -euo pipefail
|
|
|
|
SCRIPTS_ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
readonly SCRIPTS_ROOT
|
|
readonly CHECKER="$SCRIPTS_ROOT/file_length/check.py"
|
|
|
|
main() {
|
|
if [[ $# -eq 0 ]]; then
|
|
echo "Usage: $(basename "$0") <file>... | --all" >&2
|
|
exit 1
|
|
fi
|
|
if [[ ! -f "$CHECKER" ]]; then
|
|
echo "Error: checker not found at $CHECKER" >&2
|
|
exit 1
|
|
fi
|
|
|
|
PYTHONPATH="$SCRIPTS_ROOT${PYTHONPATH:+:$PYTHONPATH}" \
|
|
python3 "$CHECKER" "$@"
|
|
}
|
|
|
|
main "$@"
|