skill-atlas-cli 0.1.8 → 0.1.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (3) hide show
  1. package/package.json +3 -5
  2. package/install.zip +0 -0
  3. package/setup.sh +0 -397
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "skill-atlas-cli",
3
- "version": "0.1.8",
4
- "description": "skill-atlas CLI - 虾小宝 SKILL ATLAS 命令行工具",
3
+ "version": "0.1.9",
4
+ "description": "skill-atlas CLI - 虾小宝 命令行工具",
5
5
  "homepage": "https://skillatlas.cn/",
6
6
  "type": "module",
7
7
  "main": "bin/cli.js",
@@ -26,9 +26,7 @@
26
26
  "plugin",
27
27
  "package.json",
28
28
  "README.md",
29
- "setup.sh",
30
- "install.sh",
31
- "install.zip"
29
+ "install.sh"
32
30
  ],
33
31
  "keywords": [
34
32
  "skill-atlas",
package/install.zip DELETED
Binary file
package/setup.sh DELETED
@@ -1,397 +0,0 @@
1
- #!/usr/bin/env bash
2
-
3
- # ==============================================================================
4
- # skill-atlas 安装脚本
5
- #
6
- # 用于帮助用户检测环境并安装或升级 skill-atlas CLI
7
- # ==============================================================================
8
-
9
- set -euo pipefail
10
-
11
- PACKAGE_NAME="${PACKAGE_NAME:-skill-atlas-cli}"
12
- NPM_BIN="${NPM_BIN:-npm}"
13
- MIN_NODE_VERSION="${MIN_NODE_VERSION:-20.19.0}"
14
- PREFERRED_COMMAND="${PREFERRED_COMMAND:-skill-atlas}"
15
- INSTALL_ALIASES="skill-atlas skillatlas skill-atlas-cli"
16
-
17
- # 颜色定义
18
- RED='\033[0;31m'
19
- GREEN='\033[0;32m'
20
- YELLOW='\033[1;33m'
21
- BLUE='\033[0;34m'
22
- CYAN='\033[0;36m'
23
- BOLD='\033[1m'
24
- NC='\033[0m'
25
-
26
- OS_TYPE=""
27
- OS_NAME=""
28
- NODE_INSTALLED=false
29
- NODE_VERSION=""
30
- NODE_VERSION_OK=false
31
- INSTALLED_VERSION=""
32
- LATEST_VERSION=""
33
- NEED_INSTALL=true
34
- NEED_UPGRADE=false
35
- DETECTED_COMMAND=""
36
-
37
- print_banner() {
38
- echo ""
39
- echo -e "${CYAN}╔══════════════════════════════════════════════════════════════╗${NC}"
40
- echo -e "${CYAN}║${NC} ${BOLD}🚀 Skill-Atlas CLI 安装程序 ${CYAN}║${NC}"
41
- echo -e "${CYAN}╚══════════════════════════════════════════════════════════════╝${NC}"
42
- echo ""
43
- }
44
-
45
- print_step() {
46
- echo -e "\n${BLUE}▶${NC} ${BOLD}$1${NC}"
47
- }
48
-
49
- print_success() {
50
- echo -e "${GREEN}✓${NC} $1"
51
- }
52
-
53
- print_warning() {
54
- echo -e "${YELLOW}⚠${NC} $1"
55
- }
56
-
57
- print_error() {
58
- echo -e "${RED}✗${NC} $1" >&2
59
- }
60
-
61
- print_info() {
62
- echo -e "${CYAN}ℹ${NC} $1"
63
- }
64
-
65
- has_command() {
66
- command -v "$1" >/dev/null 2>&1
67
- }
68
-
69
- is_interactive() {
70
- [ -t 0 ] && [ -t 1 ]
71
- }
72
-
73
- version_ge() {
74
- local v1=$1
75
- local v2=$2
76
- local lower
77
-
78
- lower=$(printf '%s\n%s\n' "$v1" "$v2" | sort -V | head -n1)
79
- [ "$lower" = "$v2" ]
80
- }
81
-
82
- print_path_hint() {
83
- local npm_prefix
84
- npm_prefix="$("$NPM_BIN" config get prefix 2>/dev/null || true)"
85
-
86
- if [ -n "$npm_prefix" ] && [ -d "$npm_prefix/bin" ]; then
87
- echo ""
88
- print_info "如果安装后仍提示找不到命令,请确认以下目录已加入 PATH:"
89
- echo " $npm_prefix/bin"
90
- fi
91
- }
92
-
93
- detect_os() {
94
- print_step "检测操作系统..."
95
-
96
- case "$(uname -s)" in
97
- Darwin*)
98
- OS_TYPE="macos"
99
- OS_NAME="macOS $(sw_vers -productVersion 2>/dev/null || echo '')"
100
- ;;
101
- Linux*)
102
- if [ -f /proc/version ] && grep -qi microsoft /proc/version 2>/dev/null; then
103
- OS_TYPE="wsl"
104
- OS_NAME="Windows (WSL)"
105
- else
106
- OS_TYPE="linux"
107
- if [ -f /etc/os-release ]; then
108
- # shellcheck disable=SC1091
109
- . /etc/os-release
110
- OS_NAME="${NAME:-Linux} ${VERSION_ID:-}"
111
- else
112
- OS_NAME="Linux"
113
- fi
114
- fi
115
- ;;
116
- MINGW*|MSYS*|CYGWIN*)
117
- OS_TYPE="windows"
118
- OS_NAME="Windows (Git Bash/MSYS)"
119
- ;;
120
- *)
121
- OS_TYPE="unknown"
122
- OS_NAME="Unknown"
123
- ;;
124
- esac
125
-
126
- if [ "$OS_TYPE" = "unknown" ]; then
127
- print_error "不支持的操作系统: $(uname -s)"
128
- print_info "本脚本支持 macOS、Linux 和 Windows (WSL/Git Bash)"
129
- exit 1
130
- fi
131
-
132
- print_success "操作系统: ${OS_NAME}"
133
- }
134
-
135
- check_npm() {
136
- print_step "检测 npm 环境..."
137
-
138
- if ! has_command "$NPM_BIN"; then
139
- print_error "未找到 ${NPM_BIN},请先安装 npm 后重试"
140
- exit 1
141
- fi
142
-
143
- print_success "npm 命令: $(command -v "$NPM_BIN")"
144
- }
145
-
146
- check_node() {
147
- print_step "检测 Node.js 环境..."
148
-
149
- NODE_INSTALLED=false
150
- NODE_VERSION=""
151
- NODE_VERSION_OK=false
152
-
153
- if has_command node; then
154
- NODE_INSTALLED=true
155
- NODE_VERSION="$(node -v | sed 's/^v//')"
156
-
157
- if version_ge "$NODE_VERSION" "$MIN_NODE_VERSION"; then
158
- NODE_VERSION_OK=true
159
- print_success "Node.js 版本: v${NODE_VERSION} (满足要求 >= v${MIN_NODE_VERSION})"
160
- else
161
- print_warning "Node.js 版本: v${NODE_VERSION} (需要 >= v${MIN_NODE_VERSION})"
162
- fi
163
- else
164
- print_warning "未检测到 Node.js"
165
- fi
166
- }
167
-
168
- show_node_install_guide() {
169
- echo ""
170
- echo -e " ${BOLD}Node.js 是什么?${NC}"
171
- echo -e " skill-atlas 是一个 Node.js 命令行工具,"
172
- echo -e " 运行前需要 Node.js >= ${MIN_NODE_VERSION}。"
173
- echo ""
174
- echo -e " ${BOLD}推荐安装方式:nvm${NC}"
175
- echo -e " nvm 是 Node.js 版本管理工具,可用于安装和切换 Node 版本。"
176
- echo ""
177
- }
178
-
179
- install_nvm_and_node() {
180
- print_step "安装 Node.js"
181
- show_node_install_guide
182
-
183
- if ! is_interactive; then
184
- print_error "当前不是交互式终端,无法自动引导安装 Node.js"
185
- print_info "请先手动安装 nvm 与 Node.js:"
186
- echo " curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash"
187
- echo " export NVM_DIR=\"\$HOME/.nvm\""
188
- echo " [ -s \"\$NVM_DIR/nvm.sh\" ] && . \"\$NVM_DIR/nvm.sh\""
189
- echo " nvm install ${MIN_NODE_VERSION}"
190
- exit 1
191
- fi
192
-
193
- read -r -p " 是否需要帮助安装 nvm 和 Node.js? [Y/n]: " install_choice < /dev/tty
194
- install_choice=${install_choice:-Y}
195
-
196
- if [[ ! "$install_choice" =~ ^[Yy]$ ]]; then
197
- print_info "请手动安装 Node.js >= ${MIN_NODE_VERSION} 后重新执行本脚本"
198
- exit 1
199
- fi
200
-
201
- if ! has_command curl; then
202
- print_error "自动安装 nvm 需要 curl,请先安装 curl"
203
- exit 1
204
- fi
205
-
206
- print_step "安装 nvm..."
207
- if [ -d "$HOME/.nvm" ]; then
208
- print_success "nvm 已安装"
209
- else
210
- echo -e " 执行: ${CYAN}curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash${NC}"
211
- curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.40.1/install.sh | bash
212
- print_success "nvm 安装成功"
213
- fi
214
-
215
- export NVM_DIR="${NVM_DIR:-$HOME/.nvm}"
216
- if [ -s "$NVM_DIR/nvm.sh" ]; then
217
- # shellcheck disable=SC1090
218
- . "$NVM_DIR/nvm.sh"
219
- else
220
- print_error "未找到 nvm.sh,请重新打开终端后重试"
221
- exit 1
222
- fi
223
-
224
- print_step "安装 Node.js ${MIN_NODE_VERSION}..."
225
- echo -e " 执行: ${CYAN}nvm install ${MIN_NODE_VERSION}${NC}"
226
- nvm install "$MIN_NODE_VERSION"
227
- nvm use "$MIN_NODE_VERSION"
228
-
229
- NODE_VERSION="$(node -v | sed 's/^v//')"
230
- NODE_VERSION_OK=true
231
- print_success "Node.js ${NODE_VERSION} 安装成功"
232
- }
233
-
234
- find_available_command() {
235
- local cmd
236
- DETECTED_COMMAND=""
237
-
238
- for cmd in $INSTALL_ALIASES; do
239
- if has_command "$cmd"; then
240
- DETECTED_COMMAND="$cmd"
241
- return 0
242
- fi
243
- done
244
-
245
- return 1
246
- }
247
-
248
- check_existing_installation() {
249
- print_step "检查 ${PACKAGE_NAME} 安装状态..."
250
-
251
- INSTALLED_VERSION=""
252
- LATEST_VERSION=""
253
- NEED_INSTALL=true
254
- NEED_UPGRADE=false
255
-
256
- if find_available_command; then
257
- INSTALLED_VERSION="$("$DETECTED_COMMAND" --version 2>/dev/null || echo "")"
258
-
259
- if [ -n "$INSTALLED_VERSION" ]; then
260
- print_success "已安装命令: ${DETECTED_COMMAND}"
261
- print_success "已安装版本: v${INSTALLED_VERSION}"
262
- NEED_INSTALL=false
263
- fi
264
- else
265
- print_info "未检测到已安装命令"
266
- fi
267
-
268
- print_info "检查 npm 最新版本..."
269
- LATEST_VERSION="$("$NPM_BIN" view "$PACKAGE_NAME" version 2>/dev/null || echo "")"
270
-
271
- if [ -z "$LATEST_VERSION" ]; then
272
- print_warning "无法获取 npm 最新版本信息,将继续执行安装"
273
- if [ -n "$INSTALLED_VERSION" ]; then
274
- NEED_INSTALL=false
275
- fi
276
- return 0
277
- fi
278
-
279
- print_info "最新版本: v${LATEST_VERSION}"
280
-
281
- if [ -z "$INSTALLED_VERSION" ]; then
282
- NEED_INSTALL=true
283
- NEED_UPGRADE=false
284
- return 0
285
- fi
286
-
287
- if version_ge "$INSTALLED_VERSION" "$LATEST_VERSION"; then
288
- print_success "当前已是最新版本或更高版本"
289
- NEED_INSTALL=false
290
- NEED_UPGRADE=false
291
- else
292
- print_warning "发现可升级版本"
293
- NEED_INSTALL=false
294
- NEED_UPGRADE=true
295
- fi
296
- }
297
-
298
- install_package() {
299
- local action="安装"
300
-
301
- if [ "$NEED_INSTALL" = false ] && [ "$NEED_UPGRADE" = false ]; then
302
- print_info "无需安装或升级"
303
- return 0
304
- fi
305
-
306
- if [ "$NEED_UPGRADE" = true ]; then
307
- action="升级"
308
- fi
309
-
310
- print_step "${action} ${PACKAGE_NAME}..."
311
- echo ""
312
- echo -e " 执行: ${CYAN}${NPM_BIN} install -g ${PACKAGE_NAME}${NC}"
313
- echo ""
314
-
315
- if "$NPM_BIN" install -g "$PACKAGE_NAME"; then
316
- print_success "${PACKAGE_NAME} ${action}成功"
317
- else
318
- print_error "${PACKAGE_NAME} ${action}失败"
319
- print_path_hint
320
- exit 1
321
- fi
322
- }
323
-
324
- verify_installation() {
325
- print_step "验证安装..."
326
-
327
- if find_available_command; then
328
- local version
329
- version="$("$DETECTED_COMMAND" --version 2>/dev/null || echo "unknown")"
330
- print_success "安装成功,可执行命令: ${DETECTED_COMMAND}"
331
- print_success "版本信息: ${version}"
332
- return 0
333
- fi
334
-
335
- print_error "安装验证失败: 未检测到 CLI 命令"
336
- print_path_hint
337
- return 1
338
- }
339
-
340
- show_help() {
341
- cat <<EOF
342
- 用法: ./setup.sh [选项]
343
-
344
- 选项:
345
- -h, --help 显示帮助信息
346
-
347
- 环境变量:
348
- PACKAGE_NAME 要安装的 npm 包名,默认: skill-atlas
349
- NPM_BIN npm 命令名,默认: npm
350
- MIN_NODE_VERSION 最低 Node.js 版本,默认: 20.19.0
351
-
352
- 示例:
353
- ./setup.sh
354
- NPM_BIN=pnpm ./setup.sh
355
- EOF
356
- }
357
-
358
- main() {
359
- while [ $# -gt 0 ]; do
360
- case "$1" in
361
- -h|--help)
362
- show_help
363
- exit 0
364
- ;;
365
- *)
366
- print_error "未知参数: $1"
367
- show_help
368
- exit 1
369
- ;;
370
- esac
371
- done
372
-
373
- print_banner
374
- detect_os
375
- check_npm
376
- check_node
377
-
378
- if [ "$NODE_VERSION_OK" = false ]; then
379
- install_nvm_and_node
380
- fi
381
-
382
- check_existing_installation
383
- install_package
384
- verify_installation || exit 1
385
-
386
- echo ""
387
- echo -e "${CYAN}╔══════════════════════════════════════════════════════════════╗${NC}"
388
- echo -e "${CYAN}║${NC} ${BOLD}🎉 安装完成!${NC} ${CYAN}║${NC}"
389
- echo -e "${CYAN}╚══════════════════════════════════════════════════════════════╝${NC}"
390
- echo ""
391
- print_info "快速开始:"
392
- echo " ${PREFERRED_COMMAND} --help"
393
- echo " ${PREFERRED_COMMAND} search [skillName]"
394
- echo " ${PREFERRED_COMMAND} install [skillName]"
395
- }
396
-
397
- main "$@"