Files
Arcrun/.claude/hooks/pre-cold-startup-check.sh
T
uncle6me-web 5d00e71275 chore: D22 落地——docs/SDD/wiki/CLAUDE.md 進 repo(Gitea private 預設全 push)
頂層 D22 決策(leo 2026-07-03 拍板):推什麼由開發環境歸屬決定,
Gitea private=除機敏值/build 產物/.github 外全 push。
解 T1.5 卡點:雲端工人 clone 拿得到 credential-store-migration.md,可就地改寫 SDD。
機敏掃描兩輪通過(新增 189 檔約 2.1MB,node_modules/dist/wasm 照舊排除)。

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-03 07:13:33 +08:00

99 lines
2.8 KiB
Bash
Executable File
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#!/bin/bash
# Harness: Cold 啟動環境檢查
# 用途:init 完成後強制檢查環境就緒,不靠提醒,違反條件直接擋住(exit 2)
# 由 acr init 末尾調用
set -e
REPO_ROOT="$(git rev-parse --show-toplevel 2>/dev/null || echo ".")"
ARCRUN_CONFIG="${HOME}/.arcrun/config.yaml"
# 顏色
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
NC='\033[0m' # No Color
FAILED=0
echo -e "${YELLOW}🔍 冷啟動環境檢查${NC}"
echo ""
# 檢查 1: config.yaml 存在
if [ ! -f "$ARCRUN_CONFIG" ]; then
echo -e "${RED}❌ 缺少 $ARCRUN_CONFIG${NC}"
echo " 執行:acr init"
FAILED=1
else
echo -e "${GREEN}✓ config.yaml 存在${NC}"
fi
# 檢查 2: api_key 有值
if grep -q "^api_key:" "$ARCRUN_CONFIG" 2>/dev/null; then
api_key=$(grep "^api_key:" "$ARCRUN_CONFIG" | cut -d' ' -f2)
if [ -z "$api_key" ] || [ "$api_key" = "null" ]; then
echo -e "${RED}❌ api_key 未設${NC}"
FAILED=1
else
echo -e "${GREEN}✓ api_key 已設${NC}"
fi
else
echo -e "${RED}❌ config.yaml 缺少 api_key${NC}"
FAILED=1
fi
# 檢查 3: .mcp.json 存在且指向自己(self-hosted 用)
if grep -q "mode.*self-hosted" "$ARCRUN_CONFIG" 2>/dev/null; then
if [ ! -f ".mcp.json" ]; then
echo -e "${RED}❌ .mcp.json 缺失(self-hosted 必需)${NC}"
echo " 執行:acr init 會自動生成"
FAILED=1
else
# 檢查 mcp.json 是否指向自己(不是官方 URL)
if grep -q "mcp.arcrun.dev" ".mcp.json" && ! grep -q "workers.dev" ".mcp.json"; then
echo -e "${RED}❌ .mcp.json 指向官方 mcp.arcrun.dev(應指向自己的 worker${NC}"
FAILED=1
else
echo -e "${GREEN}✓ .mcp.json 配置正確${NC}"
fi
fi
fi
# 檢查 4: acr 能執行
if ! command -v acr &>/dev/null; then
echo -e "${RED}❌ acr 未裝或不在 PATH${NC}"
echo " 執行:npm i -g arcrun"
FAILED=1
else
echo -e "${GREEN}✓ acr 可執行${NC}"
fi
# 檢查 5: D1 database 存在(如果 self-hosted
if grep -q "mode.*self-hosted" "$ARCRUN_CONFIG" 2>/dev/null; then
if grep -q "d1_database_id" "$ARCRUN_CONFIG" 2>/dev/null; then
db_id=$(grep "d1_database_id" "$ARCRUN_CONFIG" | cut -d' ' -f2)
if [ -z "$db_id" ]; then
echo -e "${RED}❌ D1 database_id 未設${NC}"
echo " 執行:acr init 會建立 D1,或手動設定 d1_database_id"
FAILED=1
else
echo -e "${GREEN}✓ D1 database_id 已設${NC}"
fi
fi
fi
echo ""
if [ $FAILED -eq 0 ]; then
echo -e "${GREEN}✅ 環境就緒${NC}"
exit 0
else
echo -e "${RED}❌ 環境檢查失敗${NC}"
echo ""
echo "修復步驟:"
echo "1. 檢查 ~/.arcrun/config.yaml 是否完整"
echo "2. 若 self-hosted,確認 .mcp.json 指向自己的 mcp worker(不是官方)"
echo "3. 若缺少 D1,重跑 acr init --self-hosted --account-id=... --api-token=..."
echo ""
exit 2
fi