fnva 0.0.17 → 0.0.18

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/bin/fnva.js CHANGED
@@ -431,7 +431,13 @@ function run() {
431
431
  });
432
432
 
433
433
  if (result.error) {
434
- console.error(`Failed to execute fnva: ${result.error.message}`);
434
+ if (result.error.code === 'EACCES' && process.platform !== 'win32') {
435
+ console.error(`❌ Permission denied. The fnva binary is not executable.`);
436
+ console.error(`💡 To fix this, run: sudo chmod +x "${binaryPath}"`);
437
+ console.error(` Or reinstall: npm install -g fnva --force`);
438
+ } else {
439
+ console.error(`Failed to execute fnva: ${result.error.message}`);
440
+ }
435
441
  process.exit(result.status ?? 1);
436
442
  }
437
443
 
@@ -541,7 +547,13 @@ function run() {
541
547
  });
542
548
 
543
549
  if (result.error) {
544
- console.error(`Failed to execute fnva: ${result.error.message}`);
550
+ if (result.error.code === 'EACCES' && process.platform !== 'win32') {
551
+ console.error(`❌ Permission denied. The fnva binary is not executable.`);
552
+ console.error(`💡 To fix this, run: sudo chmod +x "${binaryPath}"`);
553
+ console.error(` Or reinstall: npm install -g fnva --force`);
554
+ } else {
555
+ console.error(`Failed to execute fnva: ${result.error.message}`);
556
+ }
545
557
  process.exit(result.status ?? 1);
546
558
  }
547
559
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "fnva",
3
- "version": "0.0.17",
3
+ "version": "0.0.18",
4
4
  "description": "跨平台环境切换工具,支持 Java 和 LLM 环境配置",
5
5
  "author": "protagonistss",
6
6
  "license": "MIT",
package/platforms/fnva CHANGED
Binary file
Binary file
@@ -67,7 +67,13 @@ build_target() {
67
67
  if [ -f "$source_binary" ]; then
68
68
  cp "$source_binary" "$output_dir/$binary_name"
69
69
  echo "✓ 成功构建: $output_dir/$binary_name"
70
-
70
+
71
+ # 设置可执行权限(非Windows平台)
72
+ if [[ "$binary_name" != "*.exe" ]]; then
73
+ chmod +x "$output_dir/$binary_name"
74
+ echo "✓ 已设置可执行权限"
75
+ fi
76
+
71
77
  # 可选:压缩二进制文件(使用 strip)
72
78
  if command -v strip &> /dev/null && [[ "$binary_name" != "*.exe" ]]; then
73
79
  strip "$output_dir/$binary_name"
@@ -65,14 +65,20 @@ SOURCE_BINARY="$PROJECT_ROOT/target/$TARGET/release/$BINARY_NAME"
65
65
  if [ -f "$SOURCE_BINARY" ]; then
66
66
  cp "$SOURCE_BINARY" "$OUTPUT_DIR/$BINARY_NAME"
67
67
  echo "✓ 成功构建: $OUTPUT_DIR/$BINARY_NAME"
68
-
68
+
69
+ # 设置可执行权限(仅非Windows平台)
70
+ if [[ "$BINARY_NAME" != "*.exe" ]]; then
71
+ chmod +x "$OUTPUT_DIR/$BINARY_NAME"
72
+ echo "✓ 已设置可执行权限"
73
+ fi
74
+
69
75
  # 优化二进制文件大小
70
76
  if command -v strip &> /dev/null; then
71
77
  strip "$OUTPUT_DIR/$BINARY_NAME"
72
78
  echo "✓ 已优化二进制文件大小"
73
79
  fi
74
-
75
- # 显示文件大小
80
+
81
+ # 显示文件大小和权限
76
82
  ls -lh "$OUTPUT_DIR/$BINARY_NAME"
77
83
  else
78
84
  echo "✗ 错误: 未找到构建产物: $SOURCE_BINARY"
@@ -37,6 +37,36 @@ else
37
37
  exit 1
38
38
  fi
39
39
 
40
+ # 本地环境: 验证二进制文件的可执行权限
41
+ echo "验证二进制文件权限..."
42
+ PERMISSION_ERROR_COUNT=0
43
+ for platform_dir in platforms/*/; do
44
+ if [ -d "$platform_dir" ]; then
45
+ BINARY_NAME="fnva"
46
+ if [[ "$platform_dir" == *"win32"* ]]; then
47
+ BINARY_NAME="fnva.exe"
48
+ fi
49
+
50
+ BINARY_PATH="$platform_dir/$BINARY_NAME"
51
+ if [ -f "$BINARY_PATH" ]; then
52
+ # 检查是否有可执行权限(非Windows文件)
53
+ if [[ "$BINARY_NAME" != "*.exe" ]] && [ ! -x "$BINARY_PATH" ]; then
54
+ echo "⚠️ 警告: $BINARY_PATH 缺少可执行权限"
55
+ PERMISSION_ERROR_COUNT=$((PERMISSION_ERROR_COUNT + 1))
56
+ else
57
+ echo "✓ $BINARY_PATH 权限正确"
58
+ fi
59
+ fi
60
+ fi
61
+ done
62
+
63
+ if [ $PERMISSION_ERROR_COUNT -gt 0 ]; then
64
+ echo "错误: 发现 $PERMISSION_ERROR_COUNT 个二进制文件缺少可执行权限"
65
+ echo "请运行以下命令修复权限:"
66
+ echo " find platforms -name 'fnva' -type f -exec chmod +x {} \\;"
67
+ exit 1
68
+ fi
69
+
40
70
  # 本地环境: 提示用户确认
41
71
  read -p "确认发布版本 $VERSION? (y/N) " -n 1 -r
42
72
  echo