This is an automated email from the ASF dual-hosted git repository. luigidemasi pushed a commit to branch main in repository https://gitbox.apache.org/repos/asf/camel-kit.git
commit 065448c191f21f21b5c17f2c7c20b0598a142c31 Author: Jinal Sarvaiya <[email protected]> AuthorDate: Mon Nov 9 09:32:11 2026 +0000 fix #99: scan raw config for substitutions, platform-specific managed dir --- .../camel/kit/generator/OpenCodeGenerator.java | 11 ++++--- .../camel/kit/generator/OpenCodeGeneratorTest.java | 35 +++++++++++++--------- 2 files changed, 28 insertions(+), 18 deletions(-) diff --git a/kit/camel-kit-core/src/main/java/org/apache/camel/kit/generator/OpenCodeGenerator.java b/kit/camel-kit-core/src/main/java/org/apache/camel/kit/generator/OpenCodeGenerator.java index 5c8a6ac4..2d218e98 100644 --- a/kit/camel-kit-core/src/main/java/org/apache/camel/kit/generator/OpenCodeGenerator.java +++ b/kit/camel-kit-core/src/main/java/org/apache/camel/kit/generator/OpenCodeGenerator.java @@ -119,7 +119,7 @@ public class OpenCodeGenerator extends DefaultGenerator { private static boolean collectFromFileWithSubstitutionCheck(Path configFile, Set<String> names) throws IOException { String rawContent = Files.readString(configFile); - if (rawContent.startsWith("")) { + if (rawContent.startsWith("\uFEFF")) { rawContent = rawContent.substring(1); } boolean hasSubstitution = SUBSTITUTION_PATTERN.matcher(rawContent).find(); @@ -229,12 +229,15 @@ public class OpenCodeGenerator extends DefaultGenerator { } Path managedConfigDir() { - String os = System.getProperty("os.name", "").toLowerCase(Locale.ROOT); + return managedConfigDirForOs(System.getProperty("os.name", "")); + } + + static Path managedConfigDirForOs(String osName) { + String os = osName.toLowerCase(Locale.ROOT); if (os.contains("mac") || os.contains("darwin")) { return Path.of("/Library/Application Support/opencode"); } else if (os.contains("win")) { - String programData = System.getenv("ProgramData"); - return Path.of(programData != null ? programData : "C:\\ProgramData", "opencode"); + return Path.of("C:\\ProgramData", "opencode"); } return Path.of("/etc/opencode"); } diff --git a/kit/camel-kit-core/src/test/java/org/apache/camel/kit/generator/OpenCodeGeneratorTest.java b/kit/camel-kit-core/src/test/java/org/apache/camel/kit/generator/OpenCodeGeneratorTest.java index b19b9df0..39712de0 100644 --- a/kit/camel-kit-core/src/test/java/org/apache/camel/kit/generator/OpenCodeGeneratorTest.java +++ b/kit/camel-kit-core/src/test/java/org/apache/camel/kit/generator/OpenCodeGeneratorTest.java @@ -1481,19 +1481,26 @@ class OpenCodeGeneratorTest { } @Test - void managedConfigDirIsPlatformSpecific() { - OpenCodeGenerator gen = new OpenCodeGenerator(); - Path dir = gen.managedConfigDir(); - String os = System.getProperty("os.name", "").toLowerCase(java.util.Locale.ROOT); - if (os.contains("mac") || os.contains("darwin")) { - assertEquals(Path.of("/Library/Application Support/opencode"), dir, - "macOS managed dir must use /Library/Application Support/opencode"); - } else if (os.contains("win")) { - assertTrue(dir.toString().endsWith("opencode"), - "Windows managed dir must end with opencode"); - } else { - assertEquals(Path.of("/etc/opencode"), dir, - "Linux managed dir must use /etc/opencode"); - } + void managedConfigDirSelectsLinuxPath() { + assertEquals(Path.of("/etc/opencode"), + OpenCodeGenerator.managedConfigDirForOs("Linux"), + "Linux managed dir must use /etc/opencode"); + } + + @Test + void managedConfigDirSelectsMacOsPath() { + assertEquals(Path.of("/Library/Application Support/opencode"), + OpenCodeGenerator.managedConfigDirForOs("Mac OS X"), + "macOS managed dir must use /Library/Application Support/opencode"); + assertEquals(Path.of("/Library/Application Support/opencode"), + OpenCodeGenerator.managedConfigDirForOs("Darwin"), + "Darwin managed dir must use /Library/Application Support/opencode"); + } + + @Test + void managedConfigDirSelectsWindowsPath() { + assertEquals(Path.of("C:\\ProgramData", "opencode"), + OpenCodeGenerator.managedConfigDirForOs("Windows 10"), + "Windows managed dir must use ProgramData\\opencode"); } }
