remote-claude 0.1.1 → 0.1.3

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 (2) hide show
  1. package/init.sh +127 -34
  2. package/package.json +1 -1
package/init.sh CHANGED
@@ -61,14 +61,74 @@ check_uv() {
61
61
  fi
62
62
 
63
63
  print_warning "未找到 uv,正在安装..."
64
- curl -LsSf https://astral.sh/uv/install.sh | sh
65
- # 重新加载 PATH
66
- export PATH="$HOME/.local/bin:$PATH"
64
+
65
+ # 检测可用的 pip 命令
66
+ local PIP_CMD=""
67
+ if command -v pip3 &> /dev/null; then
68
+ PIP_CMD="pip3"
69
+ elif command -v pip &> /dev/null; then
70
+ PIP_CMD="pip"
71
+ fi
72
+
73
+ # 方式一:官方安装脚本(需访问 astral.sh/GitHub)
74
+ if curl -LsSf --connect-timeout 10 https://astral.sh/uv/install.sh | sh 2>/dev/null; then
75
+ export PATH="$HOME/.local/bin:$PATH"
76
+ fi
77
+
78
+ # 方式二:pip + PyPI(GitHub 访问受限时首选;国内镜像比 GitHub 稳定)
79
+ if ! command -v uv &> /dev/null && [[ -n "$PIP_CMD" ]]; then
80
+ print_warning "尝试 pip 安装 uv(官方 PyPI)..."
81
+ $PIP_CMD install uv --quiet 2>/dev/null && export PATH="$HOME/.local/bin:$PATH"
82
+ fi
83
+
84
+ # 方式三:pip + 国内镜像(清华 PyPI,适合无法访问 GitHub/pypi.org 的内网环境)
85
+ if ! command -v uv &> /dev/null && [[ -n "$PIP_CMD" ]]; then
86
+ print_warning "尝试 pip 安装 uv(清华镜像)..."
87
+ $PIP_CMD install uv --quiet \
88
+ -i https://pypi.tuna.tsinghua.edu.cn/simple/ \
89
+ --trusted-host pypi.tuna.tsinghua.edu.cn 2>/dev/null \
90
+ && export PATH="$HOME/.local/bin:$PATH"
91
+ fi
92
+
93
+ # 方式四:conda/mamba(适合已有 Anaconda/Miniconda 环境的机器)
94
+ if ! command -v uv &> /dev/null; then
95
+ if command -v mamba &> /dev/null; then
96
+ print_warning "尝试 mamba 安装 uv..."
97
+ mamba install -c conda-forge uv -y --quiet 2>/dev/null || true
98
+ elif command -v conda &> /dev/null; then
99
+ print_warning "尝试 conda 安装 uv..."
100
+ conda install -c conda-forge uv -y --quiet 2>/dev/null || true
101
+ fi
102
+ fi
103
+
104
+ # 方式五:brew(macOS 备用)
105
+ if ! command -v uv &> /dev/null && [[ "$OS" == "Darwin" ]] && command -v brew &> /dev/null; then
106
+ print_warning "尝试 brew install uv..."
107
+ brew install uv
108
+ fi
67
109
 
68
110
  if command -v uv &> /dev/null; then
69
111
  print_success "uv 安装成功"
112
+
113
+ # 确保 ~/.local/bin 写入 shell rc(uv 官方脚本可能写 .zprofile 而非 .zshrc)
114
+ local _RC
115
+ if [[ -n "$ZSH_VERSION" ]] || [[ "$(basename "$SHELL")" == "zsh" ]]; then
116
+ _RC="$HOME/.zshrc"
117
+ else
118
+ _RC="$HOME/.bashrc"
119
+ fi
120
+ if ! grep -qF "$HOME/.local/bin" "$_RC" 2>/dev/null; then
121
+ echo "" >> "$_RC"
122
+ echo "# uv" >> "$_RC"
123
+ echo 'export PATH="$HOME/.local/bin:$PATH"' >> "$_RC"
124
+ print_success "已将 \$HOME/.local/bin 写入 $_RC"
125
+ fi
70
126
  else
71
- print_error "uv 安装失败,请手动安装: https://docs.astral.sh/uv/"
127
+ print_error "uv 安装失败,请手动安装,可选方式:"
128
+ print_info " pip3 install uv"
129
+ print_info " pip3 install uv -i https://pypi.tuna.tsinghua.edu.cn/simple/"
130
+ print_info " conda install -c conda-forge uv"
131
+ print_info " 详见: https://docs.astral.sh/uv/getting-started/installation/"
72
132
  exit 1
73
133
  fi
74
134
  }
@@ -83,8 +143,19 @@ check_tmux() {
83
143
  install_tmux() {
84
144
  if [[ "$OS" == "Darwin" ]]; then
85
145
  if ! command -v brew &> /dev/null; then
86
- print_error "未找到 Homebrew,请先安装: https://brew.sh"
87
- exit 1
146
+ print_warning "未找到 Homebrew,正在自动安装..."
147
+ /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
148
+ # 将 Homebrew 加入 PATH(Apple Silicon / Intel 路径不同)
149
+ if [[ -x "/opt/homebrew/bin/brew" ]]; then
150
+ eval "$(/opt/homebrew/bin/brew shellenv)"
151
+ elif [[ -x "/usr/local/bin/brew" ]]; then
152
+ eval "$(/usr/local/bin/brew shellenv)"
153
+ fi
154
+ if ! command -v brew &> /dev/null; then
155
+ print_error "Homebrew 安装失败,请手动安装后重试: https://brew.sh"
156
+ exit 1
157
+ fi
158
+ print_success "Homebrew 安装成功"
88
159
  fi
89
160
  brew install tmux
90
161
  elif [[ "$OS" == "Linux" ]]; then
@@ -92,9 +163,16 @@ check_tmux() {
92
163
  sudo apt-get update && sudo apt-get install -y tmux
93
164
  elif command -v yum &> /dev/null; then
94
165
  sudo yum install -y tmux
166
+ elif command -v pacman &> /dev/null; then
167
+ sudo pacman -Sy --noconfirm tmux
168
+ elif command -v apk &> /dev/null; then
169
+ sudo apk add --no-cache tmux
170
+ elif command -v zypper &> /dev/null; then
171
+ sudo zypper install -y tmux
95
172
  else
96
- print_error "无法自动安装 tmux,请手动安装 3.6 或更高版本"
97
- exit 1
173
+ print_warning "无法识别包管理器,尝试从源码编译 tmux..."
174
+ install_tmux_from_source
175
+ return
98
176
  fi
99
177
  fi
100
178
  print_success "tmux 安装成功"
@@ -107,7 +185,9 @@ check_tmux() {
107
185
  print_warning "包管理器版本不满足要求,尝试从源码编译 tmux ${TMUX_VERSION_TAG}..."
108
186
 
109
187
  # 安装编译依赖
110
- if command -v apt-get &> /dev/null; then
188
+ if [[ "$OS" == "Darwin" ]]; then
189
+ brew install libevent ncurses pkg-config bison 2>/dev/null || true
190
+ elif command -v apt-get &> /dev/null; then
111
191
  sudo apt-get install -y build-essential libevent-dev libncurses5-dev libncursesw5-dev bison pkg-config
112
192
  elif command -v yum &> /dev/null; then
113
193
  sudo yum groupinstall -y "Development Tools"
@@ -148,11 +228,22 @@ check_tmux() {
148
228
  sudo make -C "$SRC_DIR" install
149
229
  else
150
230
  make -C "$SRC_DIR" install
151
- # 若 $HOME/.local/bin 不在 PATH 中,提示用户
231
+ # 若 $HOME/.local/bin 不在 PATH 中,自动写入 shell 配置
152
232
  if [[ ":$PATH:" != *":$HOME/.local/bin:"* ]]; then
153
- print_warning "tmux 已安装到 $HOME/.local/bin,请将其加入 PATH"
154
- print_warning " echo 'export PATH=\"\$HOME/.local/bin:\$PATH\"' >> ~/.bashrc && source ~/.bashrc"
155
- WARNINGS+=("tmux 安装在 \$HOME/.local/bin,请将其加入 PATH 后重新运行 init.sh")
233
+ export PATH="$HOME/.local/bin:$PATH"
234
+ local _RC
235
+ if [[ "$(basename "$SHELL")" == "zsh" ]]; then
236
+ _RC="$HOME/.zshrc"
237
+ else
238
+ _RC="$HOME/.bashrc"
239
+ fi
240
+ local _PATH_LINE='export PATH="$HOME/.local/bin:$PATH"'
241
+ if ! grep -qF "$HOME/.local/bin" "$_RC" 2>/dev/null; then
242
+ echo "" >> "$_RC"
243
+ echo "# remote-claude: tmux 路径" >> "$_RC"
244
+ echo "$_PATH_LINE" >> "$_RC"
245
+ print_success "已自动将 \$HOME/.local/bin 加入 PATH(写入 $_RC)"
246
+ fi
156
247
  fi
157
248
  fi
158
249
 
@@ -181,18 +272,13 @@ check_tmux() {
181
272
  else
182
273
  print_warning "$TMUX_VERSION 版本过低,需要 ${REQUIRED_MAJOR}.${REQUIRED_MINOR} 或更高,正在升级..."
183
274
  install_tmux
184
- # 升级后再次验证
275
+ # 升级后再次验证,版本仍不满足则走源码编译(跨平台)
185
276
  if ! check_version; then
186
- if [[ "$OS" == "Linux" ]]; then
187
- install_tmux_from_source
188
- if ! check_version; then
189
- print_warning "源码编译安装后版本仍不满足要求($(tmux -V)),请手动安装 tmux ${REQUIRED_MAJOR}.${REQUIRED_MINOR}+"
190
- WARNINGS+=("tmux 版本不满足要求($(tmux -V)),需要 ${REQUIRED_MAJOR}.${REQUIRED_MINOR}+,请手动升级")
191
- else
192
- print_success "tmux 已升级至 $(tmux -V)"
193
- fi
277
+ install_tmux_from_source
278
+ if check_version; then
279
+ print_success "tmux 已升级至 $(tmux -V)"
194
280
  else
195
- print_warning "升级后版本仍不满足要求($(tmux -V)),请手动安装 tmux ${REQUIRED_MAJOR}.${REQUIRED_MINOR}+"
281
+ print_warning "源码编译后版本仍不满足要求($(tmux -V)),需要 ${REQUIRED_MAJOR}.${REQUIRED_MINOR}+"
196
282
  WARNINGS+=("tmux 版本不满足要求($(tmux -V)),需要 ${REQUIRED_MAJOR}.${REQUIRED_MINOR}+,请手动升级")
197
283
  fi
198
284
  else
@@ -203,14 +289,9 @@ check_tmux() {
203
289
  print_warning "未找到 tmux,正在安装..."
204
290
  install_tmux
205
291
  if ! check_version; then
206
- if [[ "$OS" == "Linux" ]]; then
207
- install_tmux_from_source
208
- if ! check_version; then
209
- print_warning "源码编译安装后版本仍不满足要求($(tmux -V)),请手动安装 tmux ${REQUIRED_MAJOR}.${REQUIRED_MINOR}+"
210
- WARNINGS+=("tmux 版本不满足要求($(tmux -V)),需要 ${REQUIRED_MAJOR}.${REQUIRED_MINOR}+,请手动升级")
211
- fi
212
- else
213
- print_warning "安装的版本不满足要求($(tmux -V)),请手动安装 tmux ${REQUIRED_MAJOR}.${REQUIRED_MINOR}+"
292
+ install_tmux_from_source
293
+ if ! check_version; then
294
+ print_warning "源码编译后版本仍不满足要求($(tmux -V)),需要 ${REQUIRED_MAJOR}.${REQUIRED_MINOR}+"
214
295
  WARNINGS+=("tmux 版本不满足要求($(tmux -V)),需要 ${REQUIRED_MAJOR}.${REQUIRED_MINOR}+,请手动升级")
215
296
  fi
216
297
  fi
@@ -354,9 +435,21 @@ configure_shell() {
354
435
  BIN_DIR="$HOME/.local/bin"
355
436
  else
356
437
  BIN_DIR="$HOME/.local/bin"
357
- print_warning "cla/cl/remote-claude 将安装到 $BIN_DIR,但该目录不在 PATH 中"
358
- print_info "请将以下行添加到 shell 配置文件(~/.zshrc 或 ~/.bashrc):"
359
- echo " export PATH=\"\$HOME/.local/bin:\$PATH\""
438
+ # 自动写入 PATH shell 配置文件
439
+ export PATH="$BIN_DIR:$PATH"
440
+ local _RC
441
+ if [[ -n "$ZSH_VERSION" ]] || [[ "$(basename "$SHELL")" == "zsh" ]]; then
442
+ _RC="$HOME/.zshrc"
443
+ else
444
+ _RC="$HOME/.bashrc"
445
+ fi
446
+ local _PATH_LINE='export PATH="$HOME/.local/bin:$PATH"'
447
+ if ! grep -qF "$HOME/.local/bin" "$_RC" 2>/dev/null; then
448
+ echo "" >> "$_RC"
449
+ echo "# remote-claude: 快捷命令路径" >> "$_RC"
450
+ echo "$_PATH_LINE" >> "$_RC"
451
+ print_success "已自动将 \$HOME/.local/bin 加入 PATH(写入 $_RC)"
452
+ fi
360
453
  fi
361
454
  mkdir -p "$BIN_DIR"
362
455
  ln -sf "$SCRIPT_DIR/bin/cla" "$BIN_DIR/cla"
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "remote-claude",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "description": "双端共享 Claude CLI 工具",
5
5
  "bin": {
6
6
  "remote-claude": "bin/remote-claude",