@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 CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@silicaclaw/cli",
3
- "version": "1.0.0-beta.10",
3
+ "version": "1.0.0-beta.11",
4
4
  "private": false,
5
5
  "publishConfig": {
6
6
  "access": "public"
@@ -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 "为了获得生产体验(可直接运行 silicaclaw ...),建议安装全局命令。"
178
- if ask_yes_no "是否现在安装全局命令 @silicaclaw/cli@beta?" "Y"; then
179
- if run_cmd_may_fail "npm_config_cache=\"$WORK_DIR/.npm-cache\" npm i -g @silicaclaw/cli@beta"; then
180
- echo "全局命令安装成功。"
181
- else
182
- echo "普通权限安装失败(常见于 macOS /usr/local 权限)。"
183
- if ask_yes_no "是否使用 sudo 重试安装全局命令?" "Y"; then
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 "已跳过全局安装。你仍可使用: npx @silicaclaw/cli@beta <command>"
217
+ echo "命令已写入,但当前 shell 未立即识别。请新开终端后运行 silicaclaw"
188
218
  fi
219
+ else
220
+ echo "命令安装失败。可继续使用: npx @silicaclaw/cli@beta <command>"
189
221
  fi
190
222
  else
191
- echo "已跳过全局安装。你仍可使用: npx @silicaclaw/cli@beta <command>"
223
+ echo "当前 PATH 中没有可写目录,无法无 sudo 安装系统命令。"
224
+ echo "你仍可直接使用: npx @silicaclaw/cli@beta <command>"
192
225
  fi
193
226
  fi
194
227