Files
scaffold/scripts/check-docs.sh
T
baozaotumao e07d57eea1 ci: scaffold 自身文档同步检查(防 README 与 template 漂移)
- scripts/check-docs.sh:校验 template/{backend,agent,frontend}/src 各层目录
  及 .vscode/.claude-commands/.copier-answers/pnpm-workspace 都在 README 有记录
- .github/workflows/docs-check.yml:scaffold 仓库根级 CI(区别于 template/.github,
  那是生成项目用的),改 template/ 或 README 时触发
- 仅作用于 scaffold 自身,不进生成项目、不属 skill
- README scripts 树补 check-docs.sh + docs-check.yml
2026-06-02 00:57:29 -07:00

44 lines
1.3 KiB
Bash
Executable File

#!/usr/bin/env bash
# 校验 README.md 是否记录了 template/ 的架构基座目录,防止文档随模板改动漂移。
# 仅作用于 scaffold 仓库自身(不进生成项目、不属 skill)。
# 用法:./scripts/check-docs.sh 退出码 0=同步 / 1=有未记录目录
set -euo pipefail
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
README="$ROOT/README.md"
fail=0
check_service_layers() {
local svc="$1" srcdir="$ROOT/template/$svc/src"
[ -d "$srcdir" ] || return 0
for d in "$srcdir"/*/; do
[ -d "$d" ] || continue
local name
name="$(basename "$d")"
if ! grep -q "$name" "$README"; then
echo "✗ template/$svc/src/$name/ 未在 README 记录"
fail=1
fi
done
}
for svc in backend agent frontend; do
check_service_layers "$svc"
done
# 顶层关键产物也应在 README 出现
for entry in ".vscode" ".claude/commands" ".copier-answers.yml" "pnpm-workspace.yaml"; do
if [ -e "$ROOT/template/$entry" ] && ! grep -q "$(basename "$entry")" "$README"; then
echo "✗ template/$entry 未在 README 记录"
fail=1
fi
done
if [ "$fail" -eq 0 ]; then
echo "✓ README 已覆盖 template 的架构基座目录与关键产物"
else
echo ""
echo "→ 请更新 README.md 的「架构基座」章节与「脚手架内容」文件树后重试。"
exit 1
fi