-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsync.sh
More file actions
executable file
·131 lines (118 loc) · 4.97 KB
/
Copy pathsync.sh
File metadata and controls
executable file
·131 lines (118 loc) · 4.97 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
#!/usr/bin/env bash
# =============================================================================
# ai-coding-kit 一键同步脚本
#
# 用法:
# bash sync.sh # 同步所有平台的 MCP 和配置
# bash sync.sh --force # 强制执行同步(跳过检查提示)
#
# 配置文件(已提交到 Git,开箱即用):
# env/mcp/ — MCP 服务器定义(敏感值用 ${VAR} 占位)
# env/platforms/ — 各平台专属配置(敏感值用 ${VAR} 占位)
# env/templates/ — 新增 MCP/平台的模板
#
# 用户唯一需要配置的文件:
# env/secrets.json — 填写 API Keys / Tokens
# (clone 后先运行 bash install.sh 初始化,再编辑 secrets.json)
#
# 此脚本会:
# 1. 检查 env/secrets.json 是否存在(不存在则提示先运行 install.sh)
# 2. 执行 sync/scripts/sync_all.sh 同步配置到各 AI 编码工具
# 并按 env/user-profile.json 可选同步跨会话用户画像
# =============================================================================
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
MCP_DIR="$SCRIPT_DIR/env/mcp"
SECRETS_FILE="$SCRIPT_DIR/env/secrets.json"
SECRETS_EXAMPLE="$SCRIPT_DIR/env/secrets.json.example"
CONFIG_FILE="$SCRIPT_DIR/env/config.json"
CONFIG_EXAMPLE="$SCRIPT_DIR/env/config.json.example"
# --- 颜色输出 ---
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
CYAN='\033[0;36m'
NC='\033[0m' # No Color
echo_step() { echo -e "${CYAN}==>${NC} $*"; }
echo_ok() { echo -e "${GREEN}[OK]${NC} $*"; }
echo_warn() { echo -e "${YELLOW}[WARN]${NC} $*"; }
echo_error() { echo -e "${RED}[ERROR]${NC} $*"; }
# --- 参数解析 ---
FORCE=false
if [ "${1:-}" = "--force" ]; then
FORCE=true
fi
# --- 检查 secrets.json ---
check_secrets() {
if [ ! -f "$SECRETS_FILE" ]; then
echo_error "env/secrets.json 不存在!"
echo ""
echo -e " ${CYAN}# 先运行初始化(从 .example 模板创建本地配置):${NC}"
echo -e " ${CYAN}bash install.sh${NC}"
echo -e " ${CYAN}\$EDITOR env/secrets.json${NC}"
echo ""
echo -e " 填入你的 API Keys / Tokens / URLs,然后重新运行 bash sync.sh"
echo -e " (路径覆盖等可选非密钥配置由 install.sh 一并创建)"
exit 1
fi
# 仍是未改的模板占位符则提示填写,避免把占位值写进各工具配置
if diff -q "$SECRETS_FILE" "$SECRETS_EXAMPLE" >/dev/null 2>&1; then
echo_error "env/secrets.json 仍是模板占位符,请先填入真实 API Keys / Tokens:"
echo ""
echo -e " ${CYAN}\$EDITOR env/secrets.json${NC}"
echo -e " 填入后重新运行 bash sync.sh"
exit 1
fi
}
# --- 检查 MCP 配置 ---
check_mcp() {
if [ ! -d "$MCP_DIR" ] || [ -z "$(ls -A "$MCP_DIR"/*.json 2>/dev/null || true)" ]; then
echo_warn "env/mcp/ 目录下没有 MCP 配置文件。"
echo_warn "MCP 配置文件已包含在仓库中 — 请确认 env/mcp/*.json 存在。"
exit 1
fi
}
# --- 检查 config.json(可选,非密钥的本地路径覆盖)---
check_config() {
if [ ! -f "$CONFIG_FILE" ]; then
echo_warn "env/config.json 不存在(可选):使用默认安装路径。"
echo_warn "如需覆盖各工具安装根目录或配置 Cursor 项目根,可 bash install.sh 后编辑 env/config.json。"
fi
}
# --- 执行同步 ---
run_sync() {
echo_step "开始同步配置到各 AI 编码工具..."
echo ""
# 调用 sync_all.sh 执行全部同步
bash "$SCRIPT_DIR/sync/scripts/sync_all.sh"
echo ""
echo_ok "同步完成!"
echo ""
echo -e "${CYAN}已同步目标:${NC}"
echo -e " • Cursor (~/.cursor/mcp.json)"
echo -e " • CodeBuddy (~/.codebuddy/mcp.json, models.json, skills)"
echo -e " • Codex CLI (~/.codex/config.toml)"
echo -e " • Xcode Codex (~/Library/Developer/Xcode/CodingAssistant/codex/)"
echo -e " • Claude Code (~/.claude.json, settings.json)"
echo -e " • Xcode Claude (~/Library/Developer/Xcode/CodingAssistant/ClaudeAgentConfig/)"
echo -e " • Cline (~/.cline/data/globalState.json, secrets.json, skills)"
echo -e " • Gemini CLI (~/.gemini/settings.json, ~/.zshrc env)"
echo -e " • Continue (~/.continue/config.yaml)"
echo -e " • Qwen Code (~/.qwen/settings.json, skills)"
echo -e " • User Profile (~/.ai-coding-kit/USER.md, optional)"
}
# --- 主流程 ---
echo ""
echo -e "${CYAN}╔══════════════════════════════════════════════╗${NC}"
echo -e "${CYAN}║ ai-coding-kit 一键同步工具 v3.0 ║${NC}"
echo -e "${CYAN}╚══════════════════════════════════════════════╝${NC}"
echo ""
check_secrets
check_mcp
check_config
if [ "$FORCE" = true ]; then
run_sync
else
echo_step "env/secrets.json 已就绪,即将同步配置..."
run_sync
fi