This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 3af7b261cac519a2c9f7aadf1d3ec6bbb48235c5
Author: Claus Ibsen <[email protected]>
AuthorDate: Fri Jul 10 20:16:38 2026 +0200

    chore: fix various bugs in CLI core commands, config, and infra
    
    - Run: pass kameletsVersion instead of camelVersion for kamelets <= 4.16 
(task 1)
    - Debug: fix mvnw lookup from filesystem root to project-relative path 
(task 3)
    - Debug: drain Maven output via inheritIO and raise timeout to 120s (task 2)
    - TransformDataWeave: null-check getParent() for bare output filename (task 
4)
    - SBOMGenerator: split Windows mvn tokens, guard exitValue on timeout, 
drain output (task 5)
    - Init: use toAbsolutePath().normalize() instead of toRealPath() for dirs 
not yet created (task 6)
    - ExportBaseCommand: use split("=", 2) for property parsing to support = in 
values (task 7)
    - CommandLineHelper: return after IOException fallback to prevent 
overwriting (task 8)
    - Export: use Instant.now() for proper UTC timestamp in reproducible builds 
(task 10)
    - Doctor: fix disk space unit threshold mismatch between value and label 
(task 11)
    - ExportBaseCommand: restrict file:->classpath: rewrite to values starting 
with file: (task 12)
    - Run, ExampleHelper, Explain, Harden: use Locale.ROOT for toUpperCase() 
(task 13)
    - InfraLog: reuse serviceNameFromPidFile for hyphenated service names (task 
41)
    - ConfigGet: return exit code 1 for missing key (task 43)
    - VersionList: return null instead of throwing UncheckedIOException when 
website unreachable (task 44)
    
    Co-Authored-By: Claude Opus 4.6 <[email protected]>
    Signed-off-by: Claus Ibsen <[email protected]>
---
 .../camel/dsl/jbang/core/commands/Debug.java       | 14 ++++---
 .../camel/dsl/jbang/core/commands/Doctor.java      |  2 +-
 .../camel/dsl/jbang/core/commands/Explain.java     |  3 +-
 .../camel/dsl/jbang/core/commands/Export.java      |  8 ++--
 .../dsl/jbang/core/commands/ExportBaseCommand.java | 14 ++++---
 .../camel/dsl/jbang/core/commands/Harden.java      |  3 +-
 .../apache/camel/dsl/jbang/core/commands/Init.java |  2 +-
 .../apache/camel/dsl/jbang/core/commands/Run.java  |  4 +-
 .../dsl/jbang/core/commands/SBOMGenerator.java     | 43 ++++++++++++----------
 .../jbang/core/commands/TransformDataWeave.java    |  5 ++-
 .../dsl/jbang/core/commands/config/ConfigGet.java  |  4 +-
 .../dsl/jbang/core/commands/infra/InfraLog.java    |  2 +-
 .../jbang/core/commands/version/VersionList.java   |  3 +-
 .../dsl/jbang/core/common/CommandLineHelper.java   |  1 +
 .../camel/dsl/jbang/core/common/ExampleHelper.java |  3 +-
 15 files changed, 62 insertions(+), 49 deletions(-)

diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Debug.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Debug.java
index 30245fd6cafe..e78ff44d89ce 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Debug.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Debug.java
@@ -379,9 +379,9 @@ public class Debug extends Run {
             printer().println("Preparing Camel Spring Boot for debugging ...");
 
             // use maven wrapper if present
-            String mvnw = "/mvnw";
+            String mvnw = "mvnw";
             if (FileUtil.isWindows()) {
-                mvnw = "/mvnw.cmd";
+                mvnw = "mvnw.cmd";
             }
             if (!new File(mvnw).exists()) {
                 mvnw = "mvn";
@@ -389,9 +389,10 @@ public class Debug extends Run {
             // use maven to build the JAR and then run the JAR after-wards
             ProcessBuilder pb = new ProcessBuilder();
             pb.command(mvnw, "-Dmaven.test.skip", "--file", 
"camel-jbang-debug-pom.xml", "package", "spring-boot:repackage");
+            pb.inheritIO();
             Process p = pb.start();
 
-            if (p.waitFor(30, TimeUnit.SECONDS)) {
+            if (p.waitFor(120, TimeUnit.SECONDS)) {
                 AtomicReference<Process> processRef = new AtomicReference<>();
                 Runtime.getRuntime().addShutdownHook(new Thread(() -> {
                     try {
@@ -503,9 +504,9 @@ public class Debug extends Run {
             printer().println("Preparing Camel Quarkus for debugging ...");
 
             // use maven wrapper if present
-            String mvnw = "/mvnw";
+            String mvnw = "mvnw";
             if (FileUtil.isWindows()) {
-                mvnw = "/mvnw.cmd";
+                mvnw = "mvnw.cmd";
             }
             if (!new File(mvnw).exists()) {
                 mvnw = "mvn";
@@ -513,9 +514,10 @@ public class Debug extends Run {
             // use maven to build the JAR and then run the JAR after-wards
             ProcessBuilder pb = new ProcessBuilder();
             pb.command(mvnw, "-Dmaven.test.skip", "--file", 
"camel-jbang-debug-pom.xml", "package", "quarkus:build");
+            pb.inheritIO();
             Process p = pb.start();
 
-            if (p.waitFor(30, TimeUnit.SECONDS)) {
+            if (p.waitFor(120, TimeUnit.SECONDS)) {
                 AtomicReference<Process> processRef = new AtomicReference<>();
                 Runtime.getRuntime().addShutdownHook(new Thread(() -> {
                     try {
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Doctor.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Doctor.java
index 42ced6711412..a4f7622ea5ef 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Doctor.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Doctor.java
@@ -157,7 +157,7 @@ public class Doctor extends CamelCommand {
         long mb = free / (1024 * 1024);
         long gb = mb / (1024);
         String status = mb > 500 ? "OK" : "LOW";
-        String unit = gb > 10 ? "GB" : "MB";
+        String unit = gb > 0 ? "GB" : "MB";
         printer().printf("  Disk Space:  %d %s free in temp dir (%s)%n", gb > 
0 ? gb : mb, unit, status);
     }
 }
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Explain.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Explain.java
index f55d479dd842..836afd62f164 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Explain.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Explain.java
@@ -21,6 +21,7 @@ import java.nio.file.Path;
 import java.util.Arrays;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Locale;
 import java.util.Optional;
 
 import org.apache.camel.catalog.CamelCatalog;
@@ -288,7 +289,7 @@ public class Explain extends CamelCommand {
         }
 
         prompt.append("File: ").append(fileName).append("\n");
-        prompt.append("Format: 
").append(fileExtension.toUpperCase()).append("\n\n");
+        prompt.append("Format: 
").append(fileExtension.toUpperCase(Locale.ROOT)).append("\n\n");
         prompt.append("Route 
definition:\n```").append(fileExtension).append("\n");
         prompt.append(routeContent).append("\n```\n\n");
         prompt.append("Please explain this Camel route:");
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Export.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Export.java
index 25532983bbb1..09912a00615e 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Export.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Export.java
@@ -21,8 +21,8 @@ import java.io.IOException;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
-import java.text.SimpleDateFormat;
-import java.util.Date;
+import java.time.Instant;
+import java.time.temporal.ChronoUnit;
 import java.util.HashMap;
 import java.util.Map;
 import java.util.Properties;
@@ -306,9 +306,7 @@ public class Export extends ExportBaseCommand {
 
     // Maven reproducible builds: 
https://maven.apache.org/guides/mini/guide-reproducible-builds.html
     protected String getBuildMavenProjectDate() {
-        // 2024-09-23T10:00:00Z
-        SimpleDateFormat sdf = new 
SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'");
-        return sdf.format(new Date());
+        return Instant.now().truncatedTo(ChronoUnit.SECONDS).toString();
     }
 
     // Copy the dockerfile into the same Maven project root directory.
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportBaseCommand.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportBaseCommand.java
index ecec1bdadf2a..66393190a527 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportBaseCommand.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportBaseCommand.java
@@ -1031,7 +1031,9 @@ public abstract class ExportBaseCommand extends 
CamelCommand {
             }
 
             // files are now loaded in classpath
-            v = v.replaceAll("file:", "classpath:");
+            if (v.startsWith("file:")) {
+                v = "classpath:" + v.substring(5);
+            }
             if ("camel.main.routesIncludePattern".equals(k)) {
                 // camel.main.routesIncludePattern should remove all .java as 
we use move them to regular src/main/java
                 // camel.main.routesIncludePattern should remove all file: 
classpath: as we copy
@@ -1076,10 +1078,9 @@ public abstract class ExportBaseCommand extends 
CamelCommand {
         if (propertySources != null) {
             for (String[] props : 
Arrays.stream(propertySources).filter(Objects::nonNull).toList()) {
                 for (String s : props) {
-                    String[] kv = s.split("=");
-                    if (kv.length != 2) {
-                        // likely a user mistake, we warn the user
-                        printer().println("WARN: property '" + s + "'' has a 
bad format (should be 'key=value'), skipping.");
+                    String[] kv = s.split("=", 2);
+                    if (kv.length < 2) {
+                        printer().println("WARN: property '" + s + "' has a 
bad format (should be 'key=value'), skipping.");
                     } else {
                         result.put(kv[0], kv[1]);
                     }
@@ -1098,7 +1099,8 @@ public abstract class ExportBaseCommand extends 
CamelCommand {
         var answer = new Properties();
         buildProperties.stream()
                 .filter(item -> !item.isEmpty())
-                .map(item -> item.split("="))
+                .map(item -> item.split("=", 2))
+                .filter(toks -> toks.length == 2)
                 .forEach(toks -> answer.setProperty(toks[0], toks[1]));
         return answer;
     }
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Harden.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Harden.java
index e7f5a2fca0e6..0b130ad11e17 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Harden.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Harden.java
@@ -28,6 +28,7 @@ import java.util.Arrays;
 import java.util.HashMap;
 import java.util.Iterator;
 import java.util.List;
+import java.util.Locale;
 import java.util.Map;
 import java.util.Optional;
 import java.util.function.BiFunction;
@@ -475,7 +476,7 @@ public class Harden extends CamelCommand {
         }
 
         prompt.append("File: ").append(fileName).append("\n");
-        prompt.append("Format: 
").append(fileExtension.toUpperCase()).append("\n\n");
+        prompt.append("Format: 
").append(fileExtension.toUpperCase(Locale.ROOT)).append("\n\n");
         prompt.append("Route 
definition:\n```").append(fileExtension).append("\n");
         prompt.append(routeContent).append("\n```\n\n");
         prompt.append("Please perform a security analysis of this Camel route 
and provide hardening recommendations:");
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Init.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Init.java
index 276926f26c15..65a5e5457b20 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Init.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Init.java
@@ -240,7 +240,7 @@ public class Init extends CamelCommand {
      */
     private String computeJavaPackageDeclaration(Path targetPath) throws 
IOException {
         String packageDeclaration = "";
-        String canonicalPath = targetPath.getParent().toRealPath().toString();
+        String canonicalPath = 
targetPath.getParent().toAbsolutePath().normalize().toString();
         String srcMainJavaPath = Paths.get("src", "main", "java").toString();
         int index = canonicalPath.indexOf(srcMainJavaPath);
         if (index != -1) {
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java
index d8ecbe8a8243..a28cb1515706 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java
@@ -417,7 +417,7 @@ public class Run extends CamelCommand {
                 return cat.equals(levelName) ? "" : cat;
             }).thenComparing(e -> e.getString("name")));
             printer().println();
-            String levelLabel = levelName.substring(0, 1).toUpperCase() + 
levelName.substring(1) + ":";
+            String levelLabel = levelName.substring(0, 
1).toUpperCase(Locale.ROOT) + levelName.substring(1) + ":";
             printer().println(levelLabel);
             printer().println("=".repeat(levelLabel.length()));
             String currentCategory = null;
@@ -2051,7 +2051,7 @@ public class Run extends CamelCommand {
         }
         if (kameletsVersion != null) {
             if (camelVersion != null && VersionHelper.isLE(camelVersion, 
"4.16.0")) {
-                jbangArgs.add("-Dcamel-kamelets.version=" + camelVersion);
+                jbangArgs.add("-Dcamel-kamelets.version=" + kameletsVersion);
             } else {
                 cmds.add("--kamelets-version=" + kameletsVersion);
             }
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/SBOMGenerator.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/SBOMGenerator.java
index cde55103ae68..7db300a29f0b 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/SBOMGenerator.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/SBOMGenerator.java
@@ -19,6 +19,8 @@ package org.apache.camel.dsl.jbang.core.commands;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.nio.file.Paths;
+import java.util.ArrayList;
+import java.util.List;
 import java.util.Properties;
 import java.util.concurrent.TimeUnit;
 
@@ -98,11 +100,11 @@ public class SBOMGenerator extends Export {
         Integer answer = doExport();
         if (answer == 0) {
             Path buildDir = Paths.get(EXPORT_DIR);
-            String mvnProgramCall;
+            List<String> mvnProgramCall;
             if (FileUtil.isWindows()) {
-                mvnProgramCall = "cmd /c mvn";
+                mvnProgramCall = List.of("cmd", "/c", "mvn");
             } else {
-                mvnProgramCall = "mvn";
+                mvnProgramCall = List.of("mvn");
             }
             boolean done;
             if (sbomFormat.equalsIgnoreCase(CYCLONEDX_FORMAT)) {
@@ -112,25 +114,25 @@ public class SBOMGenerator extends Export {
                 } else {
                     outputDirectoryParameter += "../../" + outputDirectory;
                 }
-                ProcessBuilder pb = new ProcessBuilder(
-                        mvnProgramCall,
-                        "org.cyclonedx:cyclonedx-maven-plugin:" + 
cyclonedxPluginVersion + ":makeAggregateBom",
-                        outputDirectoryParameter,
-                        "-DoutputName=" + outputName,
-                        "-DoutputFormat=" + sbomOutputFormat);
-
+                List<String> cmd = new ArrayList<>(mvnProgramCall);
+                cmd.add("org.cyclonedx:cyclonedx-maven-plugin:" + 
cyclonedxPluginVersion + ":makeAggregateBom");
+                cmd.add(outputDirectoryParameter);
+                cmd.add("-DoutputName=" + outputName);
+                cmd.add("-DoutputFormat=" + sbomOutputFormat);
+                ProcessBuilder pb = new ProcessBuilder(cmd);
                 pb.directory(buildDir.toFile());
+                pb.inheritIO();
 
                 Process p = pb.start();
                 done = p.waitFor(60, TimeUnit.SECONDS);
                 if (!done) {
+                    p.destroyForcibly();
                     answer = 1;
-                }
-                if (p.exitValue() != 0) {
+                } else if (p.exitValue() != 0) {
                     answer = p.exitValue();
                 }
             } else if (sbomFormat.equalsIgnoreCase(SPDX_FORMAT)) {
-                String outputDirectoryParameter = null;
+                String outputDirectoryParameter;
                 String outputFormat = null;
                 if (Paths.get(outputDirectory).isAbsolute()) {
                     outputDirectoryParameter = outputDirectory;
@@ -142,19 +144,20 @@ public class SBOMGenerator extends Export {
                 } else if (sbomOutputFormat.equalsIgnoreCase(SBOM_XML_FORMAT)) 
{
                     outputFormat = "RDF/XML";
                 }
-                ProcessBuilder pb = new ProcessBuilder(
-                        mvnProgramCall,
-                        "org.spdx:spdx-maven-plugin:" + spdxPluginVersion + 
":createSPDX",
-                        "-DspdxFileName=" + 
Paths.get(outputDirectoryParameter, outputName + "." + sbomOutputFormat),
-                        "-DoutputFormat=" + outputFormat);
+                List<String> cmd = new ArrayList<>(mvnProgramCall);
+                cmd.add("org.spdx:spdx-maven-plugin:" + spdxPluginVersion + 
":createSPDX");
+                cmd.add("-DspdxFileName=" + 
Paths.get(outputDirectoryParameter, outputName + "." + sbomOutputFormat));
+                cmd.add("-DoutputFormat=" + outputFormat);
+                ProcessBuilder pb = new ProcessBuilder(cmd);
                 pb.directory(buildDir.toFile());
+                pb.inheritIO();
 
                 Process p = pb.start();
                 done = p.waitFor(60, TimeUnit.SECONDS);
                 if (!done) {
+                    p.destroyForcibly();
                     answer = 1;
-                }
-                if (p.exitValue() != 0) {
+                } else if (p.exitValue() != 0) {
                     answer = p.exitValue();
                 }
             }
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/TransformDataWeave.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/TransformDataWeave.java
index 69dc286c0c88..bc3ff95df84d 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/TransformDataWeave.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/TransformDataWeave.java
@@ -121,7 +121,10 @@ public class TransformDataWeave extends CamelCommand {
 
             if (output != null) {
                 Path outputPath = resolveOutputPath(dwlFile, Path.of(output));
-                Files.createDirectories(outputPath.getParent());
+                Path parentDir = outputPath.getParent();
+                if (parentDir != null) {
+                    Files.createDirectories(parentDir);
+                }
                 Files.writeString(outputPath, dsContent);
                 printer().println("Converted: " + dwlFile + " -> " + 
outputPath);
             } else {
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/config/ConfigGet.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/config/ConfigGet.java
index 69fd0c074bbe..3b3e95bf04d1 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/config/ConfigGet.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/config/ConfigGet.java
@@ -43,15 +43,17 @@ public class ConfigGet extends CamelCommand {
 
     @Override
     public Integer doCall() throws Exception {
+        int[] exitCode = { 0 };
         CommandLineHelper.loadProperties(properties -> {
             Optional<Object> maybeProperty = 
Optional.ofNullable(properties.get(key));
             if (maybeProperty.isPresent()) {
                 printer().println(String.valueOf(maybeProperty.get()));
             } else {
                 printer().printErr(key + " key not found");
+                exitCode[0] = 1;
             }
         }, !global);
 
-        return 0;
+        return exitCode[0];
     }
 }
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/infra/InfraLog.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/infra/InfraLog.java
index 12025f67f09e..97a78992d32f 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/infra/InfraLog.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/infra/InfraLog.java
@@ -69,7 +69,7 @@ public class InfraLog extends InfraBaseCommand {
                         .toList();
 
                 for (Path logFile : logFiles) {
-                    String alias = 
logFile.getFileName().toString().split("-")[1];
+                    String alias = 
serviceNameFromPidFile(logFile.getFileName().toString());
                     createTailer(logFile.toFile(), alias, futures);
                 }
             } catch (IOException e) {
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/version/VersionList.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/version/VersionList.java
index b879aec3bf4b..63b5137c219a 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/version/VersionList.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/version/VersionList.java
@@ -19,7 +19,6 @@ package org.apache.camel.dsl.jbang.core.commands.version;
 import java.io.IOException;
 import java.io.LineNumberReader;
 import java.io.StringReader;
-import java.io.UncheckedIOException;
 import java.net.ProxySelector;
 import java.net.URI;
 import java.net.URISyntaxException;
@@ -599,7 +598,7 @@ public class VersionList extends CamelCommand {
                 }
             }
         } catch (IOException e) {
-            throw new UncheckedIOException("Could not get " + gitUrl, e);
+            return null;
         } catch (InterruptedException e) {
             Thread.currentThread().interrupt();
             throw new RuntimeException("Interrupted", e);
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/CommandLineHelper.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/CommandLineHelper.java
index 44440aba6077..5b2cb90dd9ba 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/CommandLineHelper.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/CommandLineHelper.java
@@ -129,6 +129,7 @@ public final class CommandLineHelper {
                 properties.load(reader);
             } catch (IOException e) {
                 commandLine.setDefaultValueProvider(new 
CamelUserConfigDefaultValueProvider(file));
+                return;
             }
 
             commandLine.setDefaultValueProvider(new 
CamelUserConfigDefaultValueProvider(properties));
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/ExampleHelper.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/ExampleHelper.java
index d1821c946c2f..e1ba0ed1d2f8 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/ExampleHelper.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/ExampleHelper.java
@@ -28,6 +28,7 @@ import java.time.Duration;
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
+import java.util.Locale;
 
 import org.apache.camel.util.IOHelper;
 import org.apache.camel.util.json.JsonArray;
@@ -133,7 +134,7 @@ public final class ExampleHelper {
             case "ai" -> "AI";
             case "eip" -> "EIP";
             case "rest" -> "REST";
-            default -> category.substring(0, 1).toUpperCase() + 
category.substring(1);
+            default -> category.substring(0, 1).toUpperCase(Locale.ROOT) + 
category.substring(1);
         };
     }
 

Reply via email to