与 Docker 构建的 tsc -b 对齐,避免类型错误在服务器构建才暴露。 Co-authored-by: Cursor <cursoragent@cursor.com>
38 lines
954 B
Bash
Executable File
38 lines
954 B
Bash
Executable File
#!/usr/bin/env bash
|
|
# 提交前做轻量检查:Python 格式 + 前端 TypeScript。
|
|
# 全量 pytest 放在 pre-push,避免每次 commit 都跑一遍。
|
|
set -euo pipefail
|
|
|
|
cd "$(git rev-parse --show-toplevel)"
|
|
|
|
if [ "${SKIP_TESTS:-0}" = "1" ]; then
|
|
echo "[pre-commit] SKIP_TESTS=1,跳过检查"
|
|
exit 0
|
|
fi
|
|
|
|
staged="$(git diff --cached --name-only --diff-filter=ACMR)"
|
|
|
|
python_files=()
|
|
frontend_changed=0
|
|
while IFS= read -r path; do
|
|
[ -z "$path" ] && continue
|
|
case "$path" in
|
|
*.py)
|
|
[ -f "$path" ] && python_files+=("$path")
|
|
;;
|
|
web/frontend/*)
|
|
frontend_changed=1
|
|
;;
|
|
esac
|
|
done <<< "$staged"
|
|
|
|
if [ "${#python_files[@]}" -gt 0 ]; then
|
|
echo "[pre-commit] 检查 Python 格式..."
|
|
uv run --group dev ruff format --check "${python_files[@]}"
|
|
echo "[pre-commit] Python 格式通过"
|
|
fi
|
|
|
|
if [ "$frontend_changed" -eq 1 ]; then
|
|
.githooks/run-frontend-tsc.sh
|
|
fi
|