From 3d3b626c73f485989aaaf24e03ee360f7c24f0bb Mon Sep 17 00:00:00 2001 From: tzdwindows 7 <3076584115@qq.com> Date: Mon, 25 Aug 2025 12:53:11 +0800 Subject: [PATCH] =?UTF-8?q?feat(box):=20=E5=A2=9E=E5=8A=A0=E6=8F=92?= =?UTF-8?q?=E4=BB=B6=E7=9B=AE=E5=BD=95=E5=8F=82=E6=95=B0=E5=A4=84=E7=90=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - 新增插件目录参数解析逻辑 - 实现插件目录的动态设置 - 优化参数预处理,提高代码可读性和可维护性 --- .../java/com/axis/innovators/box/Main.java | 42 +++++++++++++++---- .../innovators/box/tools/FolderCreator.java | 10 +++++ 2 files changed, 44 insertions(+), 8 deletions(-) diff --git a/src/main/java/com/axis/innovators/box/Main.java b/src/main/java/com/axis/innovators/box/Main.java index 8644100..9c2e089 100644 --- a/src/main/java/com/axis/innovators/box/Main.java +++ b/src/main/java/com/axis/innovators/box/Main.java @@ -14,6 +14,8 @@ import java.io.RandomAccessFile; import java.nio.channels.FileChannel; import java.nio.channels.FileLock; import java.nio.channels.OverlappingFileLockException; +import java.text.Format; +import java.util.ArrayList; import java.util.List; import java.util.Map; @@ -40,19 +42,42 @@ public class Main { // 检查是否包含调试控制台参数 boolean debugWindowEnabled = false; + String pluginsDirectory = null; + + // 新增:预处理参数,移除已处理的参数 + List remainingArgs = new ArrayList<>(); + for (int i = 0; i < args.length; i++) { if (!releaseEnvironments && "-debugControlWindow-on".equals(args[i])) { debugWindowEnabled = true; - // 移除此参数避免干扰后续处理 - String[] newArgs = new String[args.length - 1]; - System.arraycopy(args, 0, newArgs, 0, i); - System.arraycopy(args, i + 1, newArgs, i, args.length - i - 1); - args = newArgs; - break; + // 不添加到剩余参数中 + continue; } + + // 新增:解析pluginsDirectory参数 + if (args[i].startsWith("pluginsDirectory=")) { + pluginsDirectory = args[i].substring("pluginsDirectory=".length()); + // 移除引号(如果存在) + if (pluginsDirectory.startsWith("\"") && pluginsDirectory.endsWith("\"")) { + pluginsDirectory = pluginsDirectory.substring(1, pluginsDirectory.length() - 1); + } + // 不添加到剩余参数中 + continue; + } + + // 其他参数保留 + remainingArgs.add(args[i]); } - List> validFiles = ArgsParser.parseArgs(args); + // 如果有设置插件目录,在这里进行设置 + if (pluginsDirectory != null && !pluginsDirectory.isEmpty()) { + System.out.println("Setting up the plugin directory: " + pluginsDirectory); + FolderCreator.setPluginPath(pluginsDirectory); + } + + String[] processedArgs = remainingArgs.toArray(new String[0]); + + List> validFiles = ArgsParser.parseArgs(processedArgs); for (Map fileInfo : validFiles) { String extension = fileInfo.get("extension"); String path = fileInfo.get("path"); @@ -79,7 +104,8 @@ public class Main { if (!acquireLock()) { return; } - AxisInnovatorsBox.run(args, debugWindowEnabled); + + AxisInnovatorsBox.run(processedArgs, debugWindowEnabled); } /** diff --git a/src/main/java/com/axis/innovators/box/tools/FolderCreator.java b/src/main/java/com/axis/innovators/box/tools/FolderCreator.java index 9fa7983..06beb5e 100644 --- a/src/main/java/com/axis/innovators/box/tools/FolderCreator.java +++ b/src/main/java/com/axis/innovators/box/tools/FolderCreator.java @@ -20,6 +20,13 @@ public class FolderCreator { public static final String LANGUAGE_PATH = "language"; public static final String CONFIGURATION_PATH = "state"; public static final String JAVA_SCRIPT_PATH = "javascript"; + + public static String PLUGIN_PATH_ = ""; + + public static void setPluginPath(String pluginPath) { + PLUGIN_PATH_ = pluginPath; + } + public static String getConfigurationFolder() { String folder = createFolder(CONFIGURATION_PATH); if (folder == null) { @@ -46,6 +53,9 @@ public class FolderCreator { return folder; } public static String getPluginFolder() { + if (!PLUGIN_PATH_.isEmpty()){ + return PLUGIN_PATH_; + } String folder = createFolder(PLUGIN_PATH); if (folder == null) { logger.error("Plugin folder creation failed, please use administrator privileges to execute this procedure");