-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathinstall-v1.1.sh
More file actions
466 lines (394 loc) · 13.4 KB
/
install-v1.1.sh
File metadata and controls
466 lines (394 loc) · 13.4 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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
#!/bin/bash
# =============================================================================
# 42Plugin 本地隔离安装包 v1.1
# =============================================================================
# 支持: macOS, Linux, Windows (WSL)
# 仓库: https://github.com/whotto/42plugin
# 作者: whotto
# 更新: 2026-01-07
# =============================================================================
set -e
# 颜色定义
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
CYAN='\033[0;36m'
NC='\033[0m' # No Color
# =============================================================================
# 平台检测
# =============================================================================
detect_platform() {
local os_type=""
local arch=""
# 检测操作系统
if [[ "$OSTYPE" == "darwin"* ]]; then
os_type="macOS"
elif [[ "$OSTYPE" == "linux-gnu"* ]]; then
# 检查是否在 WSL 中运行
if grep -qEi "(Microsoft|WSL)" /proc/version &> /dev/null; then
os_type="WSL"
else
os_type="Linux"
fi
elif [[ "$OSTYPE" == "msys" ]] || [[ "$OSTYPE" == "cygwin" ]]; then
os_type="Windows-Native"
else
os_type="Unknown"
fi
# 检测架构
arch=$(uname -m)
echo "$os_type|$arch"
}
show_windows_guide() {
echo -e "${YELLOW}"
cat << 'EOF'
╔═══════════════════════════════════════════════════════════════╗
║ 检测到 Windows 原生环境 ║
╚═══════════════════════════════════════════════════════════════╝
EOF
echo -e "${NC}"
echo -e "${CYAN}本脚本需要 Unix-like 环境运行。${NC}"
echo ""
echo -e "${GREEN}推荐方案:使用 WSL (Windows Subsystem for Linux)${NC}"
echo ""
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo ""
echo "📦 WSL 安装步骤(5 分钟):"
echo ""
echo "1️⃣ 打开 PowerShell (管理员):"
echo " • 按 Win + X"
echo " • 选择 'Windows PowerShell (管理员)'"
echo ""
echo "2️⃣ 安装 WSL:"
echo -e " ${BLUE}wsl --install${NC}"
echo ""
echo "3️⃣ 重启电脑"
echo ""
echo "4️⃣ 打开 'Ubuntu' (从开始菜单)"
echo ""
echo "5️⃣ 在 Ubuntu 中运行此脚本:"
echo -e " ${BLUE}curl -fsSL https://raw.githubusercontent.com/whotto/42plugin/main/install.sh | bash${NC}"
echo ""
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo ""
echo "💡 WSL 优点:"
echo " ✅ 完整的 Linux 环境"
echo " ✅ 与 Windows 文件系统互通"
echo " ✅ 原生 Bash 支持"
echo " ✅ 微软官方支持"
echo ""
echo "📚 详细教程:"
echo " https://learn.microsoft.com/zh-cn/windows/wsl/install"
echo ""
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo ""
echo -e "${YELLOW}其他方案(不推荐):${NC}"
echo ""
echo "🔸 Git Bash:"
echo " 可能兼容性问题,建议用 WSL"
echo ""
echo "🔸 Cygwin:"
echo " 配置复杂,建议用 WSL"
echo ""
exit 1
}
show_unsupported_warning() {
echo -e "${RED}"
cat << 'EOF'
╔═══════════════════════════════════════════════════════════════╗
║ 不支持的操作系统 ║
╚═══════════════════════════════════════════════════════════════╝
EOF
echo -e "${NC}"
echo "检测到的系统: $1"
echo "架构: $2"
echo ""
echo "支持的平台:"
echo " ✅ macOS (Intel / Apple Silicon)"
echo " ✅ Linux (x64 / ARM64)"
echo " ✅ Windows WSL"
echo ""
echo "请在支持的平台上运行,或访问仓库查看更多信息:"
echo "https://github.com/whotto/42plugin"
echo ""
exit 1
}
# 检测平台
PLATFORM_INFO=$(detect_platform)
OS_TYPE=$(echo "$PLATFORM_INFO" | cut -d'|' -f1)
ARCH=$(echo "$PLATFORM_INFO" | cut -d'|' -f2)
# 处理不同平台
case "$OS_TYPE" in
"macOS"|"Linux"|"WSL")
# 支持的平台,继续安装
;;
"Windows-Native")
show_windows_guide
;;
*)
show_unsupported_warning "$OS_TYPE" "$ARCH"
;;
esac
# =============================================================================
# 主安装流程
# =============================================================================
INSTALL_DIR="$(pwd)/42plugin-local"
# 打印 Logo
echo -e "${BLUE}"
cat << 'EOF'
_ _ ____ ____ _ _
| || ||___ \| _ \| |_ _ __ _(_)_ __
| || |_ __) | |_) | | | | |/ _` | | '_ \
|__ _/ __/| __/| | |_| | (_| | | | | |
|_||_____|_| |_|\__,_|\__, |_|_| |_|
|___/
本地隔离安装 - 保持系统干净 ✨
EOF
echo -e "${NC}"
echo ""
echo "📊 系统信息:"
echo " 操作系统: $OS_TYPE"
echo " 架构: $ARCH"
echo " 安装位置: $INSTALL_DIR"
echo ""
echo "⚡ 特性: 不修改系统配置 | 可随时删除 | 完全隔离"
echo ""
# WSL 特别提示
if [ "$OS_TYPE" = "WSL" ]; then
echo -e "${CYAN}💡 检测到 WSL 环境${NC}"
echo " 提示: 安装完成后可在 Windows 和 WSL 之间共享使用"
echo ""
fi
# 检查依赖
echo "🔍 检查系统环境..."
if ! command -v curl &> /dev/null; then
echo -e "${RED}❌ 未找到 curl,请先安装${NC}"
echo ""
case "$OS_TYPE" in
"macOS")
echo "安装命令: brew install curl"
;;
"Linux"|"WSL")
echo "安装命令: sudo apt-get install curl"
echo " 或: sudo yum install curl"
;;
esac
exit 1
fi
echo -e "${GREEN}✅ curl 已安装${NC}"
# 创建安装目录
echo ""
echo "📦 创建安装目录..."
mkdir -p "$INSTALL_DIR"
cd "$INSTALL_DIR"
# 步骤 1: 安装 bun
echo ""
echo -e "${YELLOW}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
echo "📦 步骤 1/3: 安装 bun 到本地目录"
echo -e "${YELLOW}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
export BUN_INSTALL="$INSTALL_DIR/bun"
# 备份配置文件
if [ -f ~/.zshrc ]; then
cp ~/.zshrc ~/.zshrc.bak.tmp 2>/dev/null || true
fi
if [ -f ~/.bashrc ]; then
cp ~/.bashrc ~/.bashrc.bak.tmp 2>/dev/null || true
fi
# 安装 bun
echo "正在下载 bun..."
curl -fsSL https://bun.sh/install | bash
# 恢复配置文件
if [ -f ~/.zshrc.bak.tmp ]; then
mv ~/.zshrc.bak.tmp ~/.zshrc
echo -e "${GREEN}✅ 已保护 .zshrc 不被修改${NC}"
fi
if [ -f ~/.bashrc.bak.tmp ]; then
mv ~/.bashrc.bak.tmp ~/.bashrc
echo -e "${GREEN}✅ 已保护 .bashrc 不被修改${NC}"
fi
echo -e "${GREEN}✅ Bun 已安装到: $BUN_INSTALL${NC}"
# 设置 PATH
export PATH="$BUN_INSTALL/bin:$PATH"
# 步骤 2: 安装 42plugin
echo ""
echo -e "${YELLOW}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
echo "📦 步骤 2/3: 安装 42plugin"
echo -e "${YELLOW}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
bun install -g @42ailab/42plugin
echo -e "${GREEN}✅ 42plugin 已安装${NC}"
# 步骤 3: 创建启动脚本
echo ""
echo -e "${YELLOW}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
echo "📦 步骤 3/3: 创建环境脚本"
echo -e "${YELLOW}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}"
# 创建 activate.sh
cat > "$INSTALL_DIR/activate.sh" << 'ACTIVATESCRIPT'
#!/bin/bash
# 42Plugin 环境激活脚本
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
export BUN_INSTALL="$SCRIPT_DIR/bun"
export PATH="$BUN_INSTALL/bin:$PATH"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "✅ 42Plugin 本地环境已激活"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo ""
echo "📦 可用命令:"
echo " • bun - JavaScript 运行时"
echo " • 42plugin - 插件管理工具"
echo ""
echo "🔍 验证安装:"
echo " bun: $(which bun)"
echo " 42plugin: $(which 42plugin)"
echo ""
echo "📌 版本信息:"
bun --version | sed 's/^/ bun: /'
42plugin --version 2>&1 | sed 's/^/ 42plugin: /'
echo ""
echo "💡 使用提示:"
echo " • 搜索插件: 42plugin search \"关键词\""
echo " • 安装插件: 42plugin install 作者/插件名"
echo " • 查看已安装: 42plugin list"
echo " • 退出环境: deactivate"
echo ""
echo "📚 快速开始:"
echo " 1. 登录: 42plugin auth"
echo " 2. 搜索: 42plugin search \"科研\""
echo " 3. 安装: 42plugin install 42ailab/kit/sci"
echo ""
# 创建 deactivate 函数
deactivate() {
export PATH="${PATH//$BUN_INSTALL\/bin:/}"
unset BUN_INSTALL
unset -f deactivate
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo "✅ 已退出 42Plugin 环境"
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
}
ACTIVATESCRIPT
chmod +x "$INSTALL_DIR/activate.sh"
echo -e "${GREEN}✅ 激活脚本创建完成${NC}"
# 创建快速开始指南
cat > "$INSTALL_DIR/QUICKSTART.md" << 'QUICKSTART'
# 🚀 42Plugin 快速开始
## 第一步:激活环境
```bash
source ./activate.sh
```
## 第二步:登录账号
```bash
42plugin auth
```
会打开浏览器,用 GitHub 账号登录即可。
## 第三步:搜索插件
```bash
# 搜索科研相关插件
42plugin search "科研"
# 搜索开发工具
42plugin search "git"
# 搜索数据分析
42plugin search "数据"
```
## 第四步:安装插件
```bash
# 安装科研套包(推荐)
42plugin install 42ailab/kit/sci
# 安装 Web 开发套包
42plugin install 42ailab/kit/web-dev
# 安装数据科学套包
42plugin install 42ailab/kit/data-science
```
## 第五步:在 Claude Code 中使用
```bash
# 启动 Claude Code
claude
# 使用插件(示例)
/psych-review "帮我综述工作记忆研究"
/code-review src/main.js
/data-analysis "分析 data.csv"
```
## 退出环境
```bash
deactivate
```
## 常用命令
```bash
42plugin list # 查看已安装
42plugin search "关键词" # 搜索插件
42plugin install xxx # 安装
42plugin uninstall xxx # 卸载
42plugin --help # 帮助
```
## 推荐套包
| 套包 | 说明 | 安装命令 |
|------|------|---------|
| sci | 科研工具集 | `42plugin install 42ailab/kit/sci` |
| web-dev | Web 开发 | `42plugin install 42ailab/kit/web-dev` |
| data-science | 数据科学 | `42plugin install 42ailab/kit/data-science` |
---
更多帮助: https://42plugin.com/docs
QUICKSTART
echo -e "${GREEN}✅ 快速指南创建完成${NC}"
# 创建卸载脚本
cat > "$INSTALL_DIR/uninstall.sh" << 'UNINSTALL'
#!/bin/bash
# 42Plugin 卸载脚本
echo "⚠️ 即将删除 42Plugin 本地安装"
echo "位置: $(pwd)"
echo ""
read -p "确认删除?(y/N): " -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]; then
cd ..
rm -rf 42plugin-local
echo "✅ 卸载完成,零残留"
else
echo "❌ 取消卸载"
fi
UNINSTALL
chmod +x "$INSTALL_DIR/uninstall.sh"
echo -e "${GREEN}✅ 卸载脚本创建完成${NC}"
# 完成
echo ""
echo -e "${GREEN}"
cat << 'EOF'
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
✨ 安装完成!
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
EOF
echo -e "${NC}"
echo ""
echo "📂 安装位置: $INSTALL_DIR"
echo ""
echo "🚀 下一步:"
echo ""
echo " 1. 进入目录:"
echo -e " ${BLUE}cd $INSTALL_DIR${NC}"
echo ""
echo " 2. 激活环境:"
echo -e " ${BLUE}source ./activate.sh${NC}"
echo ""
echo " 3. 登录账号:"
echo -e " ${BLUE}42plugin auth${NC}"
echo ""
echo " 4. 查看快速指南:"
echo -e " ${BLUE}cat QUICKSTART.md${NC}"
echo ""
# WSL 特别提示
if [ "$OS_TYPE" = "WSL" ]; then
echo -e "${CYAN}💡 WSL 用户提示:${NC}"
echo " • 可在 Windows 访问: \\\\wsl\$\\Ubuntu\\$(pwd)"
echo " • 与 Windows 共享使用"
echo ""
fi
echo "💡 小技巧:"
echo " 在 ~/.zshrc 或 ~/.bashrc 添加别名:"
echo -e " ${YELLOW}alias activate42=\"source $INSTALL_DIR/activate.sh\"${NC}"
echo ""
echo "🗑️ 卸载方法:"
echo -e " ${RED}./uninstall.sh${NC}"
echo " 或"
echo -e " ${RED}rm -rf $INSTALL_DIR${NC}"
echo ""
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
echo ""