fnva 0.0.5 → 0.0.6
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/README.md +250 -137
- package/bin/fnva.js +62 -0
- package/package.json +2 -4
- package/platforms/fnva +0 -0
- package/platforms/fnva.exe +0 -0
package/README.md
CHANGED
|
@@ -1,49 +1,132 @@
|
|
|
1
|
-
# fnva - Fast
|
|
1
|
+
# fnva - Fast Environment Version Alter
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
跨平台环境管理工具,支持 Java、LLM 和 Claude Code 环境,具有默认环境设置和自动加载功能。
|
|
4
4
|
|
|
5
5
|
## 功能特性
|
|
6
6
|
|
|
7
7
|
- ✅ **Java 环境管理**:快速切换不同版本的 JDK
|
|
8
|
-
- ✅
|
|
8
|
+
- ✅ **LLM 环境管理**:支持多 LLM 提供商配置切换
|
|
9
|
+
- ✅ **Claude Code (CC) 环境管理**:专门为 Claude Code 设计的环境切换
|
|
10
|
+
- ✅ **默认环境支持**:支持设置默认环境
|
|
9
11
|
- ✅ **自动加载**:新 Shell 会话自动加载默认环境
|
|
10
12
|
- ✅ **智能扫描**:高效扫描系统 Java 安装,支持自定义路径
|
|
11
|
-
- ✅ **LLM 环境管理**:支持多 LLM 提供商配置切换
|
|
12
13
|
- ✅ **跨平台支持**:Windows、macOS、Linux
|
|
13
14
|
- ✅ **多 Shell 支持**:bash、zsh、fish、PowerShell、CMD
|
|
14
15
|
- ✅ **配置化扫描**:支持配置文件和环境变量自定义扫描路径
|
|
15
|
-
- ✅
|
|
16
|
-
- ✅ **环境变量引用**:支持 `${VAR_NAME}` 格式引用系统环境变量
|
|
16
|
+
- ✅ **高效去重**:智能去除重复的环境条目
|
|
17
17
|
|
|
18
18
|
## 安装
|
|
19
19
|
|
|
20
|
-
###
|
|
20
|
+
### 方式一:通过 npm 安装(推荐)
|
|
21
21
|
|
|
22
22
|
```bash
|
|
23
|
-
|
|
23
|
+
# 全局安装
|
|
24
|
+
npm install -g fnva
|
|
25
|
+
|
|
26
|
+
# 使用 yarn
|
|
27
|
+
yarn global add fnva
|
|
28
|
+
|
|
29
|
+
# 使用 pnpm
|
|
30
|
+
pnpm add -g fnva
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
### 方式二:从 Releases 下载二进制文件
|
|
34
|
+
|
|
35
|
+
1. 访问 [GitHub Releases](https://github.com/your-repo/fnva/releases)
|
|
36
|
+
2. 下载对应平台的二进制文件:
|
|
37
|
+
- Windows: `fnva-win32-x64.exe`
|
|
38
|
+
- macOS: `fnva-darwin-x64` 或 `fnva-darwin-arm64`
|
|
39
|
+
- Linux: `fnva-linux-x64`
|
|
40
|
+
|
|
41
|
+
3. 将二进制文件重命名为 `fnva`(Windows 下为 `fnva.exe`)
|
|
42
|
+
|
|
43
|
+
4. 添加到 PATH 环境变量(详见下面的配置步骤)
|
|
44
|
+
|
|
45
|
+
### 方式三:从源码构建(开发者)
|
|
46
|
+
|
|
47
|
+
**前置要求:**
|
|
48
|
+
- **Rust** 1.70+
|
|
49
|
+
- **系统依赖**:
|
|
50
|
+
- Linux: `pkg-config`, `libssl-dev`, `build-essential`
|
|
51
|
+
- macOS: Xcode Command Line Tools
|
|
52
|
+
- Windows: Microsoft Visual Studio C++ Build Tools
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
# 克隆仓库
|
|
56
|
+
git clone git@github.com:Protagonistss/fnva.git
|
|
24
57
|
cd fnva
|
|
58
|
+
|
|
59
|
+
# 构建
|
|
25
60
|
cargo build --release
|
|
61
|
+
|
|
62
|
+
# 二进制文件位置:
|
|
63
|
+
# Windows: target\release\fnva.exe
|
|
64
|
+
# macOS/Linux: target/release/fnva
|
|
26
65
|
```
|
|
27
66
|
|
|
28
|
-
###
|
|
67
|
+
### 安装后配置
|
|
68
|
+
|
|
69
|
+
#### 1. 验证安装
|
|
29
70
|
|
|
30
71
|
```bash
|
|
31
|
-
|
|
72
|
+
fnva --version
|
|
32
73
|
```
|
|
33
74
|
|
|
34
|
-
|
|
75
|
+
#### 2. Shell 集成
|
|
76
|
+
|
|
77
|
+
为了获得最佳体验,需要配置 Shell 集成。这会让 fnva 在新的 Shell 会话中自动加载环境。
|
|
35
78
|
|
|
36
|
-
|
|
79
|
+
**PowerShell(推荐):**
|
|
80
|
+
```powershell
|
|
81
|
+
# 添加到 PowerShell Profile
|
|
82
|
+
fnva env env --shell powershell | Out-String | Invoke-Expression
|
|
37
83
|
|
|
84
|
+
# 或手动添加到 $PROFILE
|
|
85
|
+
echo 'fnva env env --shell powershell | Out-String | Invoke-Expression' >> $PROFILE
|
|
86
|
+
```
|
|
87
|
+
|
|
88
|
+
**Bash/Zsh:**
|
|
38
89
|
```bash
|
|
39
|
-
#
|
|
40
|
-
|
|
90
|
+
# 添加到 ~/.bashrc 或 ~/.zshrc
|
|
91
|
+
echo 'eval "$(fnva env env --shell bash)"' >> ~/.bashrc
|
|
92
|
+
# 或
|
|
93
|
+
echo 'eval "$(fnva env env --shell zsh)"' >> ~/.zshrc
|
|
94
|
+
|
|
95
|
+
# 重新加载配置
|
|
96
|
+
source ~/.bashrc # 或 source ~/.zshrc
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
**Fish:**
|
|
100
|
+
```fish
|
|
101
|
+
# 添加到 ~/.config/fish/config.fish
|
|
102
|
+
echo 'fnva env env --shell fish | source' >> ~/.config/fish/config.fish
|
|
103
|
+
```
|
|
41
104
|
|
|
42
|
-
|
|
43
|
-
|
|
105
|
+
#### 3. 配置文件
|
|
106
|
+
|
|
107
|
+
首次运行时,fnva 会自动创建配置文件:
|
|
108
|
+
|
|
109
|
+
```bash
|
|
110
|
+
# 配置文件位置
|
|
111
|
+
Linux/macOS: ~/.fnva/config.toml
|
|
112
|
+
Windows: %USERPROFILE%\.fnva\config.toml
|
|
44
113
|
```
|
|
45
114
|
|
|
46
|
-
|
|
115
|
+
#### 4. 测试安装
|
|
116
|
+
|
|
117
|
+
```bash
|
|
118
|
+
# 列出所有环境类型
|
|
119
|
+
fnva env list-types
|
|
120
|
+
|
|
121
|
+
# 查看 Java 环境
|
|
122
|
+
fnva java list
|
|
123
|
+
|
|
124
|
+
# 查看 CC 环境
|
|
125
|
+
fnva cc list
|
|
126
|
+
|
|
127
|
+
# 查看 LLM 环境
|
|
128
|
+
fnva llm list
|
|
129
|
+
```
|
|
47
130
|
|
|
48
131
|
## 使用方法
|
|
49
132
|
|
|
@@ -77,7 +160,7 @@ fnva java use jdk-17 --shell powershell | Invoke-Expression
|
|
|
77
160
|
fnva java use jdk-17 --shell cmd > %TEMP%\fnva_use.cmd && call %TEMP%\fnva_use.cmd
|
|
78
161
|
```
|
|
79
162
|
|
|
80
|
-
#### 设置默认 Java
|
|
163
|
+
#### 设置默认 Java 环境
|
|
81
164
|
|
|
82
165
|
```bash
|
|
83
166
|
# 设置默认环境
|
|
@@ -213,168 +296,198 @@ fnva llm use openai-dev --shell powershell | Invoke-Expression
|
|
|
213
296
|
fnva llm remove openai-dev
|
|
214
297
|
```
|
|
215
298
|
|
|
216
|
-
|
|
299
|
+
### Claude Code (CC) 环境管理
|
|
217
300
|
|
|
218
|
-
|
|
219
|
-
- **Linux/macOS**: `~/.fnva/config.toml`
|
|
220
|
-
- **Windows**: `%USERPROFILE%\.fnva\config.toml`
|
|
301
|
+
专门为 Claude Code 设计的环境管理功能,支持多种 Claude Code 兼容服务的环境切换。
|
|
221
302
|
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
### 配置示例
|
|
303
|
+
#### 列出所有 CC 环境
|
|
225
304
|
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
```toml
|
|
229
|
-
[[java_environments]]
|
|
230
|
-
name = "jdk-17"
|
|
231
|
-
java_home = "/usr/lib/jvm/java-17-openjdk"
|
|
232
|
-
description = "OpenJDK 17"
|
|
233
|
-
|
|
234
|
-
[[llm_environments]]
|
|
235
|
-
name = "openai-dev"
|
|
236
|
-
provider = "openai"
|
|
237
|
-
api_key = "${OPENAI_API_KEY}"
|
|
238
|
-
base_url = "https://api.openai.com/v1"
|
|
239
|
-
model = "gpt-4"
|
|
240
|
-
temperature = 0.7
|
|
305
|
+
```bash
|
|
306
|
+
fnva cc list
|
|
241
307
|
```
|
|
242
308
|
|
|
243
|
-
|
|
309
|
+
#### 添加 CC 环境
|
|
244
310
|
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
311
|
+
```bash
|
|
312
|
+
# 方法一:使用 JSON 配置
|
|
313
|
+
fnva cc add glmcc '{
|
|
314
|
+
"provider": "anthropic",
|
|
315
|
+
"api_key": "your-api-key",
|
|
316
|
+
"base_url": "https://open.bigmodel.cn/api/anthropic",
|
|
317
|
+
"model": "glm-4.6",
|
|
318
|
+
"description": "GLM-4.6 Claude Code 环境"
|
|
319
|
+
}'
|
|
320
|
+
|
|
321
|
+
# 方法二:直接编辑配置文件
|
|
322
|
+
# 编辑 ~/.fnva/config.toml,添加:
|
|
323
|
+
# [[cc_environments]]
|
|
324
|
+
# name = "glmcc"
|
|
325
|
+
# provider = "anthropic"
|
|
326
|
+
# api_key = "your-api-key"
|
|
327
|
+
# base_url = "https://open.bigmodel.cn/api/anthropic"
|
|
328
|
+
# model = "glm-4.6"
|
|
329
|
+
# description = "GLM-4.6 Claude Code 环境"
|
|
252
330
|
```
|
|
253
331
|
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
### PowerShell(推荐)
|
|
332
|
+
#### 切换到 CC 环境
|
|
257
333
|
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
# fnva 环境集成(类似 fnm env)
|
|
262
|
-
fnva env env --shell powershell | Out-String | Invoke-Expression
|
|
263
|
-
```
|
|
334
|
+
```bash
|
|
335
|
+
# PowerShell(推荐)
|
|
336
|
+
fnva cc use glmcc --shell powershell | Invoke-Expression
|
|
264
337
|
|
|
265
|
-
|
|
338
|
+
# Bash/Zsh
|
|
339
|
+
eval "$(fnva cc use glmcc)"
|
|
266
340
|
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
- **智能切换函数**:提供 `fnva java use` 交互式切换功能
|
|
270
|
-
- **Shell 函数集成**:自动添加 PowerShell 函数用于环境切换
|
|
341
|
+
# Fish
|
|
342
|
+
fnva cc use glmcc --shell fish | source
|
|
271
343
|
|
|
272
|
-
|
|
344
|
+
# CMD
|
|
345
|
+
fnva cc use glmcc --shell cmd > %TEMP%\fnva_cc.cmd && call %TEMP%\fnva_cc.cmd
|
|
346
|
+
```
|
|
273
347
|
|
|
274
|
-
|
|
275
|
-
# 1. 设置默认环境
|
|
276
|
-
fnva java default jdk21
|
|
348
|
+
#### Manage default CC environment
|
|
277
349
|
|
|
278
|
-
|
|
279
|
-
#
|
|
350
|
+
```bash
|
|
351
|
+
# Set default CC environment
|
|
352
|
+
fnva cc default glmcc
|
|
280
353
|
|
|
281
|
-
#
|
|
282
|
-
fnva
|
|
354
|
+
# Show current default CC environment
|
|
355
|
+
fnva cc default
|
|
283
356
|
|
|
284
|
-
#
|
|
285
|
-
fnva
|
|
357
|
+
# Unset default CC environment
|
|
358
|
+
fnva cc default --unset
|
|
286
359
|
```
|
|
287
360
|
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
在 `~/.bashrc` 或 `~/.zshrc` 中添加:
|
|
361
|
+
#### 查看当前激活的 CC 环境
|
|
291
362
|
|
|
292
363
|
```bash
|
|
293
|
-
|
|
294
|
-
eval "$(fnva env env --shell bash)"
|
|
295
|
-
|
|
296
|
-
# 或使用别名快速切换
|
|
297
|
-
alias java17='eval "$(fnva java use jdk-17)"'
|
|
298
|
-
alias java11='eval "$(fnva java use jdk-11)"'
|
|
364
|
+
fnva cc current
|
|
299
365
|
```
|
|
300
366
|
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
在 `~/.config/fish/config.fish` 中添加:
|
|
367
|
+
#### 删除 CC 环境
|
|
304
368
|
|
|
305
|
-
```
|
|
306
|
-
|
|
307
|
-
fnva env env --shell fish | source
|
|
308
|
-
|
|
309
|
-
# 或定义函数
|
|
310
|
-
function java17
|
|
311
|
-
fnva java use jdk-17 | source
|
|
312
|
-
end
|
|
313
|
-
|
|
314
|
-
function java11
|
|
315
|
-
fnva java use jdk-11 | source
|
|
316
|
-
end
|
|
369
|
+
```bash
|
|
370
|
+
fnva cc remove glmcc
|
|
317
371
|
```
|
|
318
372
|
|
|
319
|
-
|
|
373
|
+
#### 预配置的 CC 环境
|
|
320
374
|
|
|
321
|
-
|
|
375
|
+
fnva 提供了一些常用的 CC 环境配置:
|
|
322
376
|
|
|
323
|
-
|
|
377
|
+
- **glmcc**: GLM-4.6 智谱 AI Claude Code 兼容服务
|
|
378
|
+
- **anycc**: AnyCC 通用 Claude Code 代理服务
|
|
379
|
+
- **kimicc**: Kimi AI Claude Code 兼容服务
|
|
324
380
|
|
|
325
|
-
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
```
|
|
381
|
+
#### 环境变量说明
|
|
382
|
+
|
|
383
|
+
CC 环境切换会设置以下环境变量:
|
|
329
384
|
|
|
330
|
-
|
|
385
|
+
- `ANTHROPIC_AUTH_TOKEN`: Claude Code 认证令牌
|
|
386
|
+
- `ANTHROPIC_BASE_URL`: Claude Code API 基础 URL
|
|
387
|
+
- `ANTHROPIC_DEFAULT_SONNET_MODEL`: 默认使用的模型
|
|
388
|
+
- `API_TIMEOUT_MS`: API 请求超时时间
|
|
389
|
+
- `CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC`: 禁用非必要网络流量
|
|
331
390
|
|
|
332
|
-
|
|
391
|
+
#### 配置示例
|
|
333
392
|
|
|
334
|
-
|
|
393
|
+
```toml
|
|
394
|
+
[[cc_environments]]
|
|
395
|
+
name = "glmcc"
|
|
396
|
+
provider = "anthropic"
|
|
397
|
+
api_key = "your-glm-api-key"
|
|
398
|
+
base_url = "https://open.bigmodel.cn/api/anthropic"
|
|
399
|
+
model = "glm-4.6"
|
|
400
|
+
description = "GLM-4.6 Claude Code 环境"
|
|
401
|
+
|
|
402
|
+
[[cc_environments]]
|
|
403
|
+
name = "anycc"
|
|
404
|
+
provider = "anthropic"
|
|
405
|
+
api_key = "your-anycc-api-key"
|
|
406
|
+
base_url = "https://your-anycc-proxy.com"
|
|
407
|
+
model = "claude-sonnet-4-5"
|
|
408
|
+
description = "AnyCC 代理服务"
|
|
409
|
+
|
|
410
|
+
[[cc_environments]]
|
|
411
|
+
name = "kimicc"
|
|
412
|
+
provider = "anthropic"
|
|
413
|
+
api_key = "your-kimi-api-key"
|
|
414
|
+
base_url = "https://api.moonshot.cn/anthropic"
|
|
415
|
+
model = "kimi-k2-turbo-preview"
|
|
416
|
+
description = "Kimi AI Claude Code 环境"
|
|
417
|
+
```
|
|
335
418
|
|
|
336
|
-
|
|
419
|
+
## 配置文件
|
|
337
420
|
|
|
421
|
+
配置文件位置:
|
|
338
422
|
- **Linux/macOS**: `~/.fnva/config.toml`
|
|
339
423
|
- **Windows**: `%USERPROFILE%\.fnva\config.toml`
|
|
340
424
|
|
|
341
|
-
|
|
425
|
+
首次运行时会自动创建配置文件。
|
|
342
426
|
|
|
343
|
-
|
|
344
|
-
```toml
|
|
345
|
-
default_java_env = "jdk21.0.6"
|
|
427
|
+
### 配置示例
|
|
346
428
|
|
|
347
|
-
|
|
348
|
-
name = "jdk21.0.6"
|
|
349
|
-
java_home = "E:\\env\\jdks\\jdk-21.0.6"
|
|
350
|
-
description = "Java 21.0.6 LTS"
|
|
351
|
-
```
|
|
429
|
+
查看 `config/config.toml.example` 获取完整配置示例。
|
|
352
430
|
|
|
353
|
-
**自定义扫描路径配置:**
|
|
354
431
|
```toml
|
|
355
|
-
#
|
|
356
|
-
|
|
357
|
-
|
|
358
|
-
|
|
359
|
-
|
|
360
|
-
]
|
|
361
|
-
```
|
|
362
|
-
|
|
363
|
-
**环境变量支持:**
|
|
364
|
-
```bash
|
|
365
|
-
# Linux/macOS
|
|
366
|
-
export FNVA_SCAN_PATHS="/path/to/jdk1:/path/to/jdk2"
|
|
432
|
+
# Java 环境配置
|
|
433
|
+
[[java_environments]]
|
|
434
|
+
name = "jdk-17"
|
|
435
|
+
java_home = "/usr/lib/jvm/java-17-openjdk"
|
|
436
|
+
description = "OpenJDK 17"
|
|
367
437
|
|
|
368
|
-
#
|
|
369
|
-
|
|
438
|
+
# LLM 环境配置
|
|
439
|
+
[[llm_environments]]
|
|
440
|
+
name = "openai-dev"
|
|
441
|
+
provider = "openai"
|
|
442
|
+
api_key = "${OPENAI_API_KEY}"
|
|
443
|
+
base_url = "https://api.openai.com/v1"
|
|
444
|
+
model = "gpt-4"
|
|
445
|
+
temperature = 0.7
|
|
446
|
+
max_tokens = 2000
|
|
447
|
+
description = "OpenAI 开发环境"
|
|
448
|
+
|
|
449
|
+
# Claude Code (CC) 环境配置
|
|
450
|
+
[[cc_environments]]
|
|
451
|
+
name = "glmcc"
|
|
452
|
+
provider = "anthropic"
|
|
453
|
+
api_key = "${GLM_API_KEY}"
|
|
454
|
+
base_url = "https://open.bigmodel.cn/api/anthropic"
|
|
455
|
+
model = "glm-4.6"
|
|
456
|
+
description = "GLM-4.6 Claude Code 环境"
|
|
457
|
+
|
|
458
|
+
[[cc_environments]]
|
|
459
|
+
name = "anycc"
|
|
460
|
+
provider = "anthropic"
|
|
461
|
+
api_key = "sk-your-api-key"
|
|
462
|
+
base_url = "https://your-proxy.com"
|
|
463
|
+
model = "claude-sonnet-4-5"
|
|
464
|
+
description = "AnyCC 代理服务"
|
|
465
|
+
|
|
466
|
+
# 仓库配置
|
|
467
|
+
[repositories]
|
|
468
|
+
java = [
|
|
469
|
+
"https://mirrors.aliyun.com/eclipse/temurin-compliance/temurin",
|
|
470
|
+
"https://api.adoptium.net/v3"
|
|
471
|
+
]
|
|
472
|
+
maven = [
|
|
473
|
+
"https://maven.aliyun.com/repository/public",
|
|
474
|
+
"https://search.maven.org/solrsearch/select"
|
|
475
|
+
]
|
|
370
476
|
```
|
|
371
477
|
|
|
372
|
-
|
|
373
|
-
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
478
|
+
### 常用命令速查
|
|
479
|
+
|
|
480
|
+
| 命令 | 功能 | 示例 |
|
|
481
|
+
|------|------|------|
|
|
482
|
+
| `fnva java list` | 列出 Java 环境 | `fnva java list` |
|
|
483
|
+
| `fnva java use <name>` | 切换 Java 环境 | `fnva java use jdk21` |
|
|
484
|
+
| `fnva java default <name>` | 设置默认 Java | `fnva java default jdk21` |
|
|
485
|
+
| `fnva cc list` | 列出 CC 环境 | `fnva cc list` |
|
|
486
|
+
| `fnva cc use <name>` | 切换 CC 环境 | `fnva cc use glmcc` |
|
|
487
|
+
| `fnva cc default <name>` | 设置默认 CC 环境 | `fnva cc default glmcc` |
|
|
488
|
+
| `fnva llm list` | 列出 LLM 环境 | `fnva llm list` |
|
|
489
|
+
| `fnva llm use <name>` | 切换 LLM 环境 | `fnva llm use openai-dev` |
|
|
490
|
+
| `fnva env switch <type> <name>` | 通用切换 | `fnva env switch java jdk17` |
|
|
378
491
|
|
|
379
492
|
## 许可证
|
|
380
493
|
|
package/bin/fnva.js
ADDED
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
|
|
3
|
+
const { spawnSync } = require('child_process');
|
|
4
|
+
const fs = require('fs');
|
|
5
|
+
const path = require('path');
|
|
6
|
+
|
|
7
|
+
function resolvePlatform() {
|
|
8
|
+
switch (process.platform) {
|
|
9
|
+
case 'win32':
|
|
10
|
+
case 'darwin':
|
|
11
|
+
case 'linux':
|
|
12
|
+
return process.platform;
|
|
13
|
+
default:
|
|
14
|
+
throw new Error(`Unsupported platform: ${process.platform}`);
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
function resolveArch() {
|
|
19
|
+
const arch = process.arch;
|
|
20
|
+
if (arch === 'x64') {
|
|
21
|
+
return 'x64';
|
|
22
|
+
}
|
|
23
|
+
if (arch === 'arm64') {
|
|
24
|
+
return 'arm64';
|
|
25
|
+
}
|
|
26
|
+
// Fallback to x64 for unknown architectures to keep previous behaviour.
|
|
27
|
+
return 'x64';
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
function buildBinaryPath() {
|
|
31
|
+
const platform = resolvePlatform();
|
|
32
|
+
const arch = resolveArch();
|
|
33
|
+
const scriptDir = __dirname;
|
|
34
|
+
const projectRoot = path.resolve(scriptDir, '..');
|
|
35
|
+
const platformDir = `${platform}-${arch}`;
|
|
36
|
+
const binaryName = platform === 'win32' ? 'fnva.exe' : 'fnva';
|
|
37
|
+
return path.join(projectRoot, 'platforms', platformDir, binaryName);
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
function run() {
|
|
41
|
+
const binaryPath = buildBinaryPath();
|
|
42
|
+
|
|
43
|
+
if (!fs.existsSync(binaryPath)) {
|
|
44
|
+
console.error(`Error: binary not found: ${binaryPath}`);
|
|
45
|
+
console.error('');
|
|
46
|
+
console.error("Please build the CLI binaries first, e.g. run 'npm run build' or 'npm run build:all'.");
|
|
47
|
+
process.exit(1);
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
const result = spawnSync(binaryPath, process.argv.slice(2), {
|
|
51
|
+
stdio: 'inherit',
|
|
52
|
+
});
|
|
53
|
+
|
|
54
|
+
if (result.error) {
|
|
55
|
+
console.error(`Failed to execute fnva: ${result.error.message}`);
|
|
56
|
+
process.exit(result.status ?? 1);
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
process.exit(result.status ?? 0);
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
run();
|
package/package.json
CHANGED
|
@@ -1,13 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "fnva",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.6",
|
|
4
4
|
"description": "跨平台环境切换工具,支持 Java 和 LLM 环境配置",
|
|
5
5
|
"author": "protagonistss",
|
|
6
6
|
"license": "MIT",
|
|
7
7
|
"bin": {
|
|
8
|
-
"fnva": "./bin/fnva"
|
|
9
|
-
"fnva.cmd": "./bin/fnva.cmd",
|
|
10
|
-
"fnva.exe": "./bin/fnva.bat"
|
|
8
|
+
"fnva": "./bin/fnva.js"
|
|
11
9
|
},
|
|
12
10
|
"scripts": {
|
|
13
11
|
"prepublishOnly": "scripts/prepare-publish.sh",
|
package/platforms/fnva
CHANGED
|
Binary file
|
package/platforms/fnva.exe
CHANGED
|
Binary file
|