chore: 设计系统闸改本地 pre-commit(撤 CI)
撤 .gitea/workflows/ds-gate.yml,改本地钩子: - scripts/hooks/pre-commit:提交动了 .superpowers/prototype/ 才跑 check-ds.mjs (12 道),违规即 exit 1 阻止;--no-verify 可跳过。 - scripts/hooks/install.sh:每台机器跑一次,装 worktree-aware shim 到 git hooks。 原型仍入库(上一提交),仅执行处从 CI 移到本地。已测:违规阻止/无关跳过均正确。 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TSKEiHsvauyxYUW2itzUXX
This commit is contained in:
@@ -1,22 +0,0 @@
|
||||
name: Design System Gate
|
||||
|
||||
# 原型设计系统守门闸(单一真源,12 道检查)。
|
||||
# 改了原型(tokens/atoms/screens/index)就跑,确保颜色/排版/层级/圆角/字体/图标
|
||||
# 全走 tokens.css/atoms.css,组件已在 index.html 登记且未 fork。
|
||||
on:
|
||||
push:
|
||||
branches: ['**']
|
||||
paths:
|
||||
- '.superpowers/prototype/**'
|
||||
pull_request:
|
||||
paths:
|
||||
- '.superpowers/prototype/**'
|
||||
|
||||
jobs:
|
||||
check-ds:
|
||||
runs-on: mac
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- name: 设计系统守门(check-ds.mjs · 12 道闸)
|
||||
run: node .superpowers/prototype/tools/check-ds.mjs
|
||||
Executable
+22
@@ -0,0 +1,22 @@
|
||||
#!/bin/sh
|
||||
# 安装本地 git 钩子(每台机器跑一次)。把 git 的 pre-commit 接到仓库内
|
||||
# scripts/hooks/pre-commit(设计系统守门闸)。钩子是本地的,不随 git 同步——
|
||||
# 故需各机器各跑一次本脚本。
|
||||
set -e
|
||||
|
||||
hooks_dir="$(git rev-parse --git-path hooks)"
|
||||
mkdir -p "$hooks_dir"
|
||||
target="$hooks_dir/pre-commit"
|
||||
|
||||
cat > "$target" <<'SH'
|
||||
#!/bin/sh
|
||||
# 委托到仓库内 scripts/hooks/pre-commit(随当前 worktree 的 checkout 走;
|
||||
# 不存在则放行,便于尚未合入该脚本的分支/worktree)。
|
||||
hook="$(git rev-parse --show-toplevel)/scripts/hooks/pre-commit"
|
||||
[ -x "$hook" ] && exec "$hook"
|
||||
exit 0
|
||||
SH
|
||||
chmod +x "$target"
|
||||
|
||||
echo "[ds-gate] ✓ 已安装 pre-commit 钩子 → $target"
|
||||
echo "[ds-gate] 今后提交若动了 .superpowers/prototype/ 会自动跑 12 道设计系统闸。"
|
||||
Executable
+29
@@ -0,0 +1,29 @@
|
||||
#!/bin/sh
|
||||
# 原型设计系统守门闸(本地 pre-commit)。
|
||||
# 仅当本次提交动了原型(.superpowers/prototype/)时跑 check-ds.mjs 的 12 道检查;
|
||||
# 任一违规 → 阻止提交。临时跳过:git commit --no-verify。
|
||||
#
|
||||
# 安装(每台机器一次,把仓库内本脚本接到 git 钩子):
|
||||
# sh scripts/hooks/install.sh
|
||||
root="$(git rev-parse --show-toplevel)"
|
||||
gate="$root/.superpowers/prototype/tools/check-ds.mjs"
|
||||
|
||||
# 没动原型 → 直接放行
|
||||
if ! git diff --cached --name-only | grep -q '^\.superpowers/prototype/'; then
|
||||
exit 0
|
||||
fi
|
||||
|
||||
if [ ! -f "$gate" ]; then
|
||||
echo "[ds-gate] ⚠ 找不到 $gate,跳过设计系统检查。"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
echo "[ds-gate] 原型有改动,跑设计系统守门闸(12 道)…"
|
||||
if ! node "$gate" >/dev/null 2>&1; then
|
||||
echo "[ds-gate] ✗ 设计系统检查未通过,提交已阻止。"
|
||||
echo "[ds-gate] 详情:node .superpowers/prototype/tools/check-ds.mjs"
|
||||
echo "[ds-gate] 跳过:git commit --no-verify"
|
||||
exit 1
|
||||
fi
|
||||
echo "[ds-gate] ✓ 设计系统 12 道闸全过。"
|
||||
exit 0
|
||||
Reference in New Issue
Block a user