fnva 0.0.1

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 ADDED
@@ -0,0 +1,261 @@
1
+ # 环境切换工具 (nva)
2
+
3
+ 跨平台环境切换工具,支持 Java 和 LLM 环境配置管理。
4
+
5
+ ## 功能特性
6
+
7
+ - ✅ **Java 环境管理**:快速切换不同版本的 JDK
8
+ - ✅ **LLM 环境管理**:支持多 LLM 提供商配置切换
9
+ - ✅ **跨平台支持**:Windows、macOS、Linux
10
+ - ✅ **多 Shell 支持**:bash、zsh、fish、PowerShell、CMD
11
+ - ✅ **自动扫描**:自动检测系统中的 Java 安装
12
+ - ✅ **环境变量引用**:支持 `${VAR_NAME}` 格式引用系统环境变量
13
+
14
+ ## 安装
15
+
16
+ ### 通过 npm 安装(推荐)
17
+
18
+ ```bash
19
+ # 全局安装
20
+ npm install -g nva
21
+
22
+ # 或使用 yarn
23
+ yarn global add nva
24
+
25
+ # 或使用 pnpm
26
+ pnpm add -g nva
27
+ ```
28
+
29
+ 安装完成后,可以直接使用 `nva` 命令。
30
+
31
+ ### 从源码构建
32
+
33
+ #### 本地构建(当前平台)
34
+
35
+ ```bash
36
+ git clone <repository-url>
37
+ cd cool-utils
38
+ npm run build
39
+ ```
40
+
41
+ 编译后的二进制文件位于 `platforms/<platform>/nva`。
42
+
43
+ #### 构建所有平台
44
+
45
+ 项目使用 GitHub Actions 自动构建所有平台的二进制文件。当创建版本标签时,会自动构建并发布到 npm。
46
+
47
+ **手动触发构建:**
48
+ 1. 在 GitHub 上创建新的 Release 标签(例如 `v0.1.0`)
49
+ 2. GitHub Actions 会自动构建所有平台
50
+ 3. 构建完成后自动发布到 npm
51
+
52
+ **本地构建所有平台(需要交叉编译工具):**
53
+ ```bash
54
+ npm run build:all
55
+ ```
56
+
57
+ 注意:需要安装 `cross` 工具:`cargo install cross`
58
+
59
+ ### 添加到 PATH
60
+
61
+ 将二进制文件复制到系统 PATH 中,或创建符号链接:
62
+
63
+ ```bash
64
+ # Linux/macOS
65
+ sudo ln -s $(pwd)/target/release/nva /usr/local/bin/nva
66
+
67
+ # 或添加到 ~/.bashrc 或 ~/.zshrc
68
+ export PATH="$PATH:$(pwd)/target/release"
69
+ ```
70
+
71
+ ## 使用方法
72
+
73
+ ### Java 环境管理
74
+
75
+ #### 列出所有 Java 环境
76
+
77
+ ```bash
78
+ nva java list
79
+ ```
80
+
81
+ #### 扫描系统中的 Java 安装
82
+
83
+ ```bash
84
+ nva java scan
85
+ ```
86
+
87
+ #### 添加 Java 环境
88
+
89
+ ```bash
90
+ nva java add --name jdk-17 --home /usr/lib/jvm/java-17-openjdk --description "OpenJDK 17"
91
+ ```
92
+
93
+ #### 切换到 Java 环境
94
+
95
+ ```bash
96
+ # 自动检测 shell
97
+ eval "$(nva java use jdk-17)"
98
+
99
+ # 指定 shell
100
+ eval "$(nva java use jdk-17 --shell bash)"
101
+ ```
102
+
103
+ #### 删除 Java 环境
104
+
105
+ ```bash
106
+ nva java remove jdk-17
107
+ ```
108
+
109
+ ### LLM 环境管理
110
+
111
+ #### 列出所有 LLM 环境
112
+
113
+ ```bash
114
+ nva llm list
115
+ ```
116
+
117
+ #### 查看支持的提供商
118
+
119
+ ```bash
120
+ nva llm providers
121
+ ```
122
+
123
+ 支持的提供商:
124
+ - `openai` - OpenAI API
125
+ - `anthropic` - Anthropic Claude API
126
+ - `azure-openai` - Azure OpenAI
127
+ - `google-gemini` - Google Gemini
128
+ - `cohere` - Cohere API
129
+ - `mistral` - Mistral AI
130
+ - `ollama` - Ollama (本地部署)
131
+
132
+ #### 添加 LLM 环境
133
+
134
+ ```bash
135
+ # OpenAI
136
+ nva llm add \
137
+ --name openai-dev \
138
+ --provider openai \
139
+ --api-key "${OPENAI_API_KEY}" \
140
+ --model gpt-4 \
141
+ --temperature 0.7
142
+
143
+ # Anthropic
144
+ nva llm add \
145
+ --name anthropic-prod \
146
+ --provider anthropic \
147
+ --api-key "${ANTHROPIC_API_KEY}" \
148
+ --model claude-3-opus-20240229
149
+
150
+ # Ollama (本地)
151
+ nva llm add \
152
+ --name ollama-local \
153
+ --provider ollama \
154
+ --base-url http://localhost:11434 \
155
+ --model llama2
156
+ ```
157
+
158
+ #### 切换到 LLM 环境
159
+
160
+ ```bash
161
+ # 自动检测 shell
162
+ eval "$(nva llm use openai-dev)"
163
+
164
+ # 指定 shell (PowerShell)
165
+ nva llm use openai-dev --shell powershell | Invoke-Expression
166
+ ```
167
+
168
+ #### 删除 LLM 环境
169
+
170
+ ```bash
171
+ nva llm remove openai-dev
172
+ ```
173
+
174
+ ## 配置文件
175
+
176
+ 配置文件位置:
177
+ - **Linux/macOS**: `~/.nva/config.toml`
178
+ - **Windows**: `%USERPROFILE%\.nva\config.toml`
179
+
180
+ 首次运行时会自动创建配置文件。
181
+
182
+ ### 配置示例
183
+
184
+ 查看 `config/config.toml.example` 获取完整配置示例。
185
+
186
+ ```toml
187
+ [[java_environments]]
188
+ name = "jdk-17"
189
+ java_home = "/usr/lib/jvm/java-17-openjdk"
190
+ description = "OpenJDK 17"
191
+
192
+ [[llm_environments]]
193
+ name = "openai-dev"
194
+ provider = "openai"
195
+ api_key = "${OPENAI_API_KEY}"
196
+ base_url = "https://api.openai.com/v1"
197
+ model = "gpt-4"
198
+ temperature = 0.7
199
+ ```
200
+
201
+ ## 环境变量引用
202
+
203
+ 在配置文件中可以使用 `${VAR_NAME}` 格式引用系统环境变量:
204
+
205
+ ```toml
206
+ [[llm_environments]]
207
+ name = "openai-prod"
208
+ provider = "openai"
209
+ api_key = "${OPENAI_API_KEY}" # 从系统环境变量读取
210
+ ```
211
+
212
+ ## Shell 集成
213
+
214
+ ### Bash/Zsh
215
+
216
+ 在 `~/.bashrc` 或 `~/.zshrc` 中添加:
217
+
218
+ ```bash
219
+ # 快速切换 Java 环境
220
+ alias java17='eval "$(nva java use jdk-17)"'
221
+ alias java11='eval "$(nva java use jdk-11)"'
222
+
223
+ # 快速切换 LLM 环境
224
+ alias llm-openai='eval "$(nva llm use openai-dev)"'
225
+ alias llm-anthropic='eval "$(nva llm use anthropic-prod)"'
226
+ ```
227
+
228
+ ### Fish
229
+
230
+ 在 `~/.config/fish/config.fish` 中添加:
231
+
232
+ ```fish
233
+ function java17
234
+ nva java use jdk-17 | source
235
+ end
236
+
237
+ function llm-openai
238
+ nva llm use openai-dev | source
239
+ end
240
+ ```
241
+
242
+ ### PowerShell
243
+
244
+ 在 `$PROFILE` 中添加:
245
+
246
+ ```powershell
247
+ function Switch-Java {
248
+ param([string]$Name)
249
+ nva java use $Name | Invoke-Expression
250
+ }
251
+
252
+ function Switch-Llm {
253
+ param([string]$Name)
254
+ nva llm use $Name | Invoke-Expression
255
+ }
256
+ ```
257
+
258
+ ## 许可证
259
+
260
+ MIT License
261
+
package/bin/nva ADDED
@@ -0,0 +1,55 @@
1
+ #!/bin/bash
2
+
3
+ # nva - 跨平台环境切换工具
4
+ # 根据当前平台和架构选择对应的二进制文件并执行
5
+
6
+ # 获取脚本所在目录
7
+ SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
8
+ PROJECT_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
9
+
10
+ # 检测平台和架构
11
+ OS=$(uname -s | tr '[:upper:]' '[:lower:]')
12
+ ARCH=$(uname -m)
13
+
14
+ # 平台映射
15
+ case "$OS" in
16
+ darwin)
17
+ PLATFORM="darwin"
18
+ ;;
19
+ linux)
20
+ PLATFORM="linux"
21
+ ;;
22
+ *)
23
+ echo "错误: 不支持的操作系统: $OS" >&2
24
+ exit 1
25
+ ;;
26
+ esac
27
+
28
+ # 架构映射
29
+ case "$ARCH" in
30
+ x86_64)
31
+ CPU="x64"
32
+ ;;
33
+ arm64|aarch64)
34
+ CPU="arm64"
35
+ ;;
36
+ *)
37
+ echo "警告: 未识别的架构 $ARCH,使用 x64" >&2
38
+ CPU="x64"
39
+ ;;
40
+ esac
41
+
42
+ # 构建二进制文件路径
43
+ PLATFORM_DIR="$PLATFORM-$CPU"
44
+ BINARY_PATH="$PROJECT_ROOT/platforms/$PLATFORM_DIR/nva"
45
+
46
+ # 检查二进制文件是否存在
47
+ if [ ! -f "$BINARY_PATH" ]; then
48
+ echo "错误: 未找到二进制文件: $BINARY_PATH" >&2
49
+ echo "请运行 'npm run build' 构建二进制文件" >&2
50
+ exit 1
51
+ fi
52
+
53
+ # 执行二进制文件,传递所有参数
54
+ exec "$BINARY_PATH" "$@"
55
+
package/bin/nva.cmd ADDED
@@ -0,0 +1,31 @@
1
+ @echo off
2
+ REM nva - Windows CMD 启动脚本
3
+
4
+ setlocal
5
+
6
+ REM 检测平台和架构
7
+ set OS=win32
8
+ if "%PROCESSOR_ARCHITECTURE%"=="AMD64" (
9
+ set ARCH=x64
10
+ ) else if "%PROCESSOR_ARCHITECTURE%"=="ARM64" (
11
+ set ARCH=arm64
12
+ ) else (
13
+ set ARCH=x64
14
+ )
15
+
16
+ REM 构建二进制文件路径
17
+ set PLATFORM_DIR=%OS%-%ARCH%
18
+ set BINARY_PATH=%~dp0..\platforms\%PLATFORM_DIR%\nva.exe
19
+
20
+ REM 检查二进制文件是否存在
21
+ if not exist "%BINARY_PATH%" (
22
+ echo 错误: 未找到二进制文件: %BINARY_PATH%
23
+ echo 请运行 'npm run build' 构建二进制文件
24
+ exit /b 1
25
+ )
26
+
27
+ REM 执行二进制文件
28
+ "%BINARY_PATH%" %*
29
+
30
+ endlocal
31
+
package/bin/nva.ps1 ADDED
@@ -0,0 +1,30 @@
1
+ # nva - Windows PowerShell 启动脚本
2
+
3
+ param(
4
+ [Parameter(ValueFromRemainingArguments=$true)]
5
+ [string[]]$Arguments
6
+ )
7
+
8
+ # 检测平台和架构
9
+ $os = "win32"
10
+ $arch = if ($env:PROCESSOR_ARCHITECTURE -eq "ARM64") { "arm64" } else { "x64" }
11
+
12
+ # 构建二进制文件路径
13
+ $platformDir = "$os-$arch"
14
+ $scriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
15
+ $binaryPath = Join-Path $scriptDir ".." "platforms" $platformDir "nva.exe"
16
+
17
+ # 检查二进制文件是否存在
18
+ if (-not (Test-Path $binaryPath)) {
19
+ Write-Host "错误: 未找到二进制文件: $binaryPath" -ForegroundColor Red
20
+ Write-Host "请运行 'npm run build' 构建二进制文件" -ForegroundColor Yellow
21
+ exit 1
22
+ }
23
+
24
+ # 执行二进制文件
25
+ & $binaryPath $Arguments
26
+
27
+ if ($LASTEXITCODE) {
28
+ exit $LASTEXITCODE
29
+ }
30
+
package/package.json ADDED
@@ -0,0 +1,46 @@
1
+ {
2
+ "name": "fnva",
3
+ "version": "0.0.1",
4
+ "description": "跨平台环境切换工具,支持 Java 和 LLM 环境配置",
5
+ "author": "protagonistss",
6
+ "license": "MIT",
7
+ "bin": {
8
+ "nva": "./bin/nva"
9
+ },
10
+ "scripts": {
11
+ "prepublishOnly": "scripts/prepare-publish.sh",
12
+ "build": "scripts/build-local.sh",
13
+ "build:all": "scripts/build-all.sh"
14
+ },
15
+ "files": [
16
+ "bin/",
17
+ "platforms/",
18
+ "README.md",
19
+ "LICENSE"
20
+ ],
21
+ "os": [
22
+ "darwin",
23
+ "linux",
24
+ "win32"
25
+ ],
26
+ "cpu": [
27
+ "x64",
28
+ "arm64"
29
+ ],
30
+ "keywords": [
31
+ "environment",
32
+ "java",
33
+ "llm",
34
+ "cli",
35
+ "tool",
36
+ "nva"
37
+ ],
38
+ "repository": {
39
+ "type": "git",
40
+ "url": "https://github.com/Protagonistss/cool-utils.git"
41
+ },
42
+ "engines": {
43
+ "node": ">=14.0.0"
44
+ }
45
+ }
46
+
Binary file