@silicaclaw/cli 1.0.0-beta.10 → 1.0.0-beta.11
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/package.json +1 -1
- package/scripts/quickstart.sh +45 -12
package/package.json
CHANGED
package/scripts/quickstart.sh
CHANGED
|
@@ -47,6 +47,38 @@ run_cmd_may_fail() {
|
|
|
47
47
|
return $code
|
|
48
48
|
}
|
|
49
49
|
|
|
50
|
+
first_writable_path_dir() {
|
|
51
|
+
local path_value="${PATH:-}"
|
|
52
|
+
local old_ifs="$IFS"
|
|
53
|
+
IFS=':'
|
|
54
|
+
for d in $path_value; do
|
|
55
|
+
if [ -n "$d" ] && [ -d "$d" ] && [ -w "$d" ] && [ -x "$d" ]; then
|
|
56
|
+
printf '%s' "$d"
|
|
57
|
+
IFS="$old_ifs"
|
|
58
|
+
return 0
|
|
59
|
+
fi
|
|
60
|
+
done
|
|
61
|
+
IFS="$old_ifs"
|
|
62
|
+
return 1
|
|
63
|
+
}
|
|
64
|
+
|
|
65
|
+
install_command_shim() {
|
|
66
|
+
local bindir="$1"
|
|
67
|
+
local script_path="$WORK_DIR/scripts/silicaclaw-cli.mjs"
|
|
68
|
+
local target="$bindir/silicaclaw"
|
|
69
|
+
if [ ! -f "$script_path" ]; then
|
|
70
|
+
echo "未找到 CLI 脚本: $script_path"
|
|
71
|
+
return 1
|
|
72
|
+
fi
|
|
73
|
+
cat >"$target" <<EOF
|
|
74
|
+
#!/usr/bin/env bash
|
|
75
|
+
set -euo pipefail
|
|
76
|
+
exec node "$script_path" "\$@"
|
|
77
|
+
EOF
|
|
78
|
+
chmod +x "$target"
|
|
79
|
+
return 0
|
|
80
|
+
}
|
|
81
|
+
|
|
50
82
|
ask_yes_no() {
|
|
51
83
|
local prompt="$1"
|
|
52
84
|
local default="${2:-Y}"
|
|
@@ -172,23 +204,24 @@ fi
|
|
|
172
204
|
title "安装系统命令(silicaclaw)"
|
|
173
205
|
if command -v silicaclaw >/dev/null 2>&1; then
|
|
174
206
|
echo "已检测到系统命令: $(command -v silicaclaw)"
|
|
175
|
-
echo "
|
|
207
|
+
echo "跳过命令安装。"
|
|
176
208
|
else
|
|
177
|
-
echo "
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
run_cmd "npm_config_cache=\"$WORK_DIR/.npm-cache\" sudo npm i -g @silicaclaw/cli@beta"
|
|
185
|
-
echo "全局命令安装成功。"
|
|
209
|
+
echo "将尝试无 sudo 安装 silicaclaw 命令到 PATH 中可写目录。"
|
|
210
|
+
BIN_DIR="$(first_writable_path_dir || true)"
|
|
211
|
+
if [ -n "${BIN_DIR:-}" ]; then
|
|
212
|
+
if install_command_shim "$BIN_DIR"; then
|
|
213
|
+
echo "命令已安装: $BIN_DIR/silicaclaw"
|
|
214
|
+
if command -v silicaclaw >/dev/null 2>&1; then
|
|
215
|
+
echo "验证成功: $(command -v silicaclaw)"
|
|
186
216
|
else
|
|
187
|
-
echo "
|
|
217
|
+
echo "命令已写入,但当前 shell 未立即识别。请新开终端后运行 silicaclaw。"
|
|
188
218
|
fi
|
|
219
|
+
else
|
|
220
|
+
echo "命令安装失败。可继续使用: npx @silicaclaw/cli@beta <command>"
|
|
189
221
|
fi
|
|
190
222
|
else
|
|
191
|
-
echo "
|
|
223
|
+
echo "当前 PATH 中没有可写目录,无法无 sudo 安装系统命令。"
|
|
224
|
+
echo "你仍可直接使用: npx @silicaclaw/cli@beta <command>"
|
|
192
225
|
fi
|
|
193
226
|
fi
|
|
194
227
|
|