fnva 0.0.4 → 0.0.5

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 CHANGED
@@ -1,73 +1,50 @@
1
- # 环境切换工具 (fnva)
1
+ # fnva - Fast Node Version Manager for Java
2
2
 
3
- 跨平台环境切换工具,支持 Java LLM 环境配置管理。
3
+ 类似 fnm 的跨平台 Java 环境管理工具,支持默认环境设置和自动加载。
4
4
 
5
5
  ## 功能特性
6
6
 
7
7
  - ✅ **Java 环境管理**:快速切换不同版本的 JDK
8
+ - ✅ **默认环境支持**:类似 fnm,支持设置默认 Java 环境
9
+ - ✅ **自动加载**:新 Shell 会话自动加载默认环境
10
+ - ✅ **智能扫描**:高效扫描系统 Java 安装,支持自定义路径
8
11
  - ✅ **LLM 环境管理**:支持多 LLM 提供商配置切换
9
12
  - ✅ **跨平台支持**:Windows、macOS、Linux
10
13
  - ✅ **多 Shell 支持**:bash、zsh、fish、PowerShell、CMD
11
- - ✅ **自动扫描**:自动检测系统中的 Java 安装
14
+ - ✅ **配置化扫描**:支持配置文件和环境变量自定义扫描路径
15
+ - ✅ **高效去重**:智能去除重复的 Java 环境条目
12
16
  - ✅ **环境变量引用**:支持 `${VAR_NAME}` 格式引用系统环境变量
13
17
 
14
18
  ## 安装
15
19
 
16
- ### 通过 npm 安装(推荐)
17
-
18
- ```bash
19
- # 全局安装
20
- npm install -g fnva
21
-
22
- # 或使用 yarn
23
- yarn global add fnva
24
-
25
- # 或使用 pnpm
26
- pnpm add -g fnva
27
- ```
28
-
29
- 安装完成后,可以直接使用 `fnva` 命令。
30
-
31
- ### 从源码构建
32
-
33
- #### 本地构建(当前平台)
20
+ ### 从源码构建(推荐)
34
21
 
35
22
  ```bash
36
23
  git clone <repository-url>
37
- cd cool-utils
38
- npm run build
24
+ cd fnva
25
+ cargo build --release
39
26
  ```
40
27
 
41
- 编译后的二进制文件位于 `platforms/<platform>/fnva`。
42
-
43
- #### 构建所有平台
44
-
45
- 项目使用 GitHub Actions 自动构建所有平台的二进制文件。当创建版本标签时,会自动构建并发布到 npm。
28
+ ### 通过 Cargo 安装
46
29
 
47
- **手动触发构建:**
48
- 1. 在 GitHub 上创建新的 Release 标签(例如 `v0.1.0`)
49
- 2. GitHub Actions 会自动构建所有平台
50
- 3. 构建完成后自动发布到 npm
51
-
52
- **本地构建所有平台(需要交叉编译工具):**
53
30
  ```bash
54
- npm run build:all
31
+ cargo install --path .
55
32
  ```
56
33
 
57
- 注意:需要安装 `cross` 工具:`cargo install cross`
58
-
59
34
  ### 添加到 PATH
60
35
 
61
- 将二进制文件复制到系统 PATH 中,或创建符号链接:
36
+ 将二进制文件复制到系统 PATH 中:
62
37
 
63
38
  ```bash
64
39
  # Linux/macOS
65
- sudo ln -s $(pwd)/target/release/fnva /usr/local/bin/fnva
40
+ sudo cp target/release/fnva /usr/local/bin/fnva
66
41
 
67
42
  # 或添加到 ~/.bashrc 或 ~/.zshrc
68
43
  export PATH="$PATH:$(pwd)/target/release"
69
44
  ```
70
45
 
46
+ Windows 用户需要将 `target\release\fnva.exe` 添加到 PATH 环境变量中。
47
+
71
48
  ## 使用方法
72
49
 
73
50
  ### Java 环境管理
@@ -78,12 +55,6 @@ export PATH="$PATH:$(pwd)/target/release"
78
55
  fnva java list
79
56
  ```
80
57
 
81
- #### 扫描系统中的 Java 安装
82
-
83
- ```bash
84
- fnva java scan
85
- ```
86
-
87
58
  #### 添加 Java 环境
88
59
 
89
60
  ```bash
@@ -93,11 +64,36 @@ fnva java add --name jdk-17 --home /usr/lib/jvm/java-17-openjdk --description "O
93
64
  #### 切换到 Java 环境
94
65
 
95
66
  ```bash
96
- # 自动检测 shell
67
+ # Bash / Zsh
97
68
  eval "$(fnva java use jdk-17)"
98
69
 
99
- # 指定 shell
100
- eval "$(fnva java use jdk-17 --shell bash)"
70
+ # Fish
71
+ fnva java use jdk-17 --shell fish | source
72
+
73
+ # PowerShell
74
+ fnva java use jdk-17 --shell powershell | Invoke-Expression
75
+
76
+ # CMD
77
+ fnva java use jdk-17 --shell cmd > %TEMP%\fnva_use.cmd && call %TEMP%\fnva_use.cmd
78
+ ```
79
+
80
+ #### 设置默认 Java 环境(类似 fnm)
81
+
82
+ ```bash
83
+ # 设置默认环境
84
+ fnva java default jdk-21
85
+
86
+ # 查看当前默认环境
87
+ fnva java default
88
+
89
+ # 清除默认设置
90
+ fnva java default --unset
91
+ ```
92
+
93
+ #### 查看当前激活的环境
94
+
95
+ ```bash
96
+ fnva java current
101
97
  ```
102
98
 
103
99
  #### 删除 Java 环境
@@ -106,6 +102,52 @@ eval "$(fnva java use jdk-17 --shell bash)"
106
102
  fnva java remove jdk-17
107
103
  ```
108
104
 
105
+ #### 扫描系统中的 Java 安装
106
+
107
+ ```bash
108
+ fnva java scan
109
+ ```
110
+
111
+ **扫描功能详解:**
112
+
113
+ **基础扫描:**
114
+ - 自动检测系统标准 Java 安装路径
115
+ - 扫描用户主目录下的 `.fnva/java-packages`
116
+ - 检查 PATH 环境变量中的 Java 可执行文件
117
+
118
+ **自定义扫描路径:**
119
+
120
+ 1. **配置文件方式**(推荐):
121
+ ```toml
122
+ # ~/.fnva/config.toml
123
+ custom_java_scan_paths = [
124
+ "D:\\tools\\java",
125
+ "/opt/custom/java",
126
+ "/home/user/my-jdks"
127
+ ]
128
+ ```
129
+
130
+ 2. **环境变量方式**:
131
+ ```bash
132
+ # 临时添加扫描路径
133
+ export FNVA_SCAN_PATHS="/path/to/jdk1:/path/to/jdk2"
134
+ fnva java scan
135
+
136
+ # Windows
137
+ set FNVA_SCAN_PATHS=D:\tools\java;E:\other\java
138
+ fnva java scan
139
+ ```
140
+
141
+ **扫描性能:**
142
+ - 🔒 **安全**:只扫描指定路径,不进行全盘搜索
143
+ - ⚡ **快速**:使用高效的去重算法,避免重复处理
144
+ - 🎯 **精确**:智能识别 Java 安装,过滤无效路径
145
+
146
+ **支持的扫描路径:**
147
+ - Windows:`C:\Program Files\Java`、`C:\Program Files\Eclipse Adoptium` 等
148
+ - macOS:`/Library/Java/JavaVirtualMachines`、`/opt/homebrew/Caskroom` 等
149
+ - Linux:`/usr/lib/jvm`、`/opt/java`、`/usr/local/java` 等
150
+
109
151
  ### LLM 环境管理
110
152
 
111
153
  #### 列出所有 LLM 环境
@@ -209,20 +251,51 @@ provider = "openai"
209
251
  api_key = "${OPENAI_API_KEY}" # 从系统环境变量读取
210
252
  ```
211
253
 
212
- ## Shell 集成
254
+ ## Shell 集成(fnm 风格)
255
+
256
+ ### PowerShell(推荐)
257
+
258
+ 在你的 PowerShell Profile 中添加以下内容以启用 fnm 风格的自动环境切换:
259
+
260
+ ```powershell
261
+ # fnva 环境集成(类似 fnm env)
262
+ fnva env env --shell powershell | Out-String | Invoke-Expression
263
+ ```
264
+
265
+ #### 功能特性
266
+
267
+ - **自动加载默认环境**:新 PowerShell 会话自动加载设置的默认 Java 环境
268
+ - **环境持久化**:重启 PowerShell 后自动恢复上次的 Java 环境
269
+ - **智能切换函数**:提供 `fnva java use` 交互式切换功能
270
+ - **Shell 函数集成**:自动添加 PowerShell 函数用于环境切换
271
+
272
+ #### 使用示例
273
+
274
+ ```powershell
275
+ # 1. 设置默认环境
276
+ fnva java default jdk21
277
+
278
+ # 2. 重启 PowerShell 后会自动加载默认环境
279
+ # 显示: "Loading default Java environment: jdk21"
280
+
281
+ # 3. 交互式切换
282
+ fnva java use jdk17
283
+
284
+ # 4. 查看当前环境
285
+ fnva java current
286
+ ```
213
287
 
214
288
  ### Bash/Zsh
215
289
 
216
290
  在 `~/.bashrc` 或 `~/.zshrc` 中添加:
217
291
 
218
292
  ```bash
219
- # 快速切换 Java 环境
293
+ # fnva 环境集成
294
+ eval "$(fnva env env --shell bash)"
295
+
296
+ # 或使用别名快速切换
220
297
  alias java17='eval "$(fnva java use jdk-17)"'
221
298
  alias java11='eval "$(fnva java use jdk-11)"'
222
-
223
- # 快速切换 LLM 环境
224
- alias llm-openai='eval "$(fnva llm use openai-dev)"'
225
- alias llm-anthropic='eval "$(fnva llm use anthropic-prod)"'
226
299
  ```
227
300
 
228
301
  ### Fish
@@ -230,31 +303,79 @@ alias llm-anthropic='eval "$(fnva llm use anthropic-prod)"'
230
303
  在 `~/.config/fish/config.fish` 中添加:
231
304
 
232
305
  ```fish
306
+ # fnva 环境集成
307
+ fnva env env --shell fish | source
308
+
309
+ # 或定义函数
233
310
  function java17
234
311
  fnva java use jdk-17 | source
235
312
  end
236
313
 
237
- function llm-openai
238
- fnva llm use openai-dev | source
314
+ function java11
315
+ fnva java use jdk-11 | source
239
316
  end
240
317
  ```
241
318
 
242
- ### PowerShell
319
+ ## 工作原理
243
320
 
244
- `$PROFILE` 中添加:
321
+ ### 默认环境管理
245
322
 
246
- ```powershell
247
- function Switch-Java {
248
- param([string]$Name)
249
- fnva java use $Name | Invoke-Expression
250
- }
251
-
252
- function Switch-Llm {
253
- param([string]$Name)
254
- fnva llm use $Name | Invoke-Expression
255
- }
323
+ fnva 类似 fnm 的工作方式:
324
+
325
+ 1. **设置默认环境**:
326
+ ```bash
327
+ fnva java default jdk21
328
+ ```
329
+
330
+ 2. **Shell 集成**:在 Shell Profile 中添加环境切换脚本
331
+
332
+ 3. **自动加载**:新 Shell 会话自动检测并加载默认环境
333
+
334
+ 4. **环境持久化**:环境配置保存在 `~/.fnva/config.toml` 中
335
+
336
+ ### 配置文件位置
337
+
338
+ - **Linux/macOS**: `~/.fnva/config.toml`
339
+ - **Windows**: `%USERPROFILE%\.fnva\config.toml`
340
+
341
+ #### 配置示例
342
+
343
+ **基础配置:**
344
+ ```toml
345
+ default_java_env = "jdk21.0.6"
346
+
347
+ [[java_environments]]
348
+ name = "jdk21.0.6"
349
+ java_home = "E:\\env\\jdks\\jdk-21.0.6"
350
+ description = "Java 21.0.6 LTS"
256
351
  ```
257
352
 
353
+ **自定义扫描路径配置:**
354
+ ```toml
355
+ # 自定义 Java 扫描路径
356
+ custom_java_scan_paths = [
357
+ "D:\\tools\\java",
358
+ "/opt/custom/java",
359
+ "/home/user/my-jdks"
360
+ ]
361
+ ```
362
+
363
+ **环境变量支持:**
364
+ ```bash
365
+ # Linux/macOS
366
+ export FNVA_SCAN_PATHS="/path/to/jdk1:/path/to/jdk2"
367
+
368
+ # Windows
369
+ set FNVA_SCAN_PATHS=D:\tools\java;E:\other\java
370
+ ```
371
+
372
+ **支持的扫描路径类型:**
373
+ - 系统标准 Java 安装目录
374
+ - 用户主目录下的 `.fnva/java-packages`
375
+ - 配置文件中的自定义路径
376
+ - 环境变量 `FNVA_SCAN_PATHS` 指定的路径
377
+ - PATH 环境变量中的 Java 可执行文件
378
+
258
379
  ## 许可证
259
380
 
260
381
  MIT License
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fnva",
3
- "version": "0.0.4",
3
+ "version": "0.0.5",
4
4
  "description": "跨平台环境切换工具,支持 Java 和 LLM 环境配置",
5
5
  "author": "protagonistss",
6
6
  "license": "MIT",
package/platforms/fnva CHANGED
Binary file
Binary file
@@ -0,0 +1 @@
1
+ Skipping cross-compiled build for aarch64-unknown-linux-gnu