skill-atlas-cli 0.1.8 → 0.1.10
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.
- package/lib/index.js +1 -1
- package/package.json +3 -5
- package/install.zip +0 -0
- package/setup.sh +0 -397
package/lib/index.js
CHANGED
|
@@ -143,7 +143,7 @@ var import_picocolors = /* @__PURE__ */ __toESM((/* @__PURE__ */ __commonJSMin((
|
|
|
143
143
|
const CONFIG_DIR = path.join(os.homedir(), ".openclawmp");
|
|
144
144
|
const AUTH_FILE = path.join(CONFIG_DIR, "auth.json");
|
|
145
145
|
const CREDENTIALS_FILE = path.join(CONFIG_DIR, "credentials.json");
|
|
146
|
-
let API_BASE = "https://
|
|
146
|
+
let API_BASE = "https://skillatlas.cn/";
|
|
147
147
|
const OPENCLAW_STATE_DIR = process.env.OPENCLAW_STATE_DIR || path.join(os.homedir(), ".openclaw");
|
|
148
148
|
const LOCKFILE = path.join(OPENCLAW_STATE_DIR, "seafood-lock.json");
|
|
149
149
|
const DEVICE_JSON = path.join(OPENCLAW_STATE_DIR, "identity", "device.json");
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "skill-atlas-cli",
|
|
3
|
-
"version": "0.1.
|
|
4
|
-
"description": "skill-atlas CLI - 虾小宝
|
|
3
|
+
"version": "0.1.10",
|
|
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
|
-
"
|
|
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 "$@"
|