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 8aa7bd17f2d9548249993eec9fc8c7311946e505
Author: Claus Ibsen <[email protected]>
AuthorDate: Fri Jul 10 20:05:24 2026 +0200

    chore: fix version list EOL filter, update command bugs, and Windows 
compatibility
    
    - VersionList: invert EOL filter to keep active releases (not EOL ones)
    - UpdateRun: return process exit code instead of always returning 0
    - Update: return separate tokens for Windows cmd /c mvn to fix 
ProcessBuilder
    - CamelUpdate/UpdateList: split recipe YAML on \R instead of platform 
separator
    - UpdateList: fix Quarkus stream prefix match with dot boundary and use
      ComparableVersion for proper version sorting
    - CamelQuarkusUpdate: throw CamelUpdateException when no catalog entry 
matches
      instead of passing -Dstream=null, guard lastIndexOf result
    
    Co-Authored-By: Claude Opus 4.6 <[email protected]>
    Signed-off-by: Claus Ibsen <[email protected]>
---
 .../jbang/core/commands/update/CamelQuarkusUpdate.java    | 15 ++++++++++++---
 .../camel/dsl/jbang/core/commands/update/CamelUpdate.java |  4 ++--
 .../camel/dsl/jbang/core/commands/update/Update.java      |  9 +++------
 .../camel/dsl/jbang/core/commands/update/UpdateList.java  | 10 ++++++----
 .../camel/dsl/jbang/core/commands/update/UpdateRun.java   |  4 +---
 .../dsl/jbang/core/commands/version/VersionList.java      |  4 ++--
 6 files changed, 26 insertions(+), 20 deletions(-)

diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/update/CamelQuarkusUpdate.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/update/CamelQuarkusUpdate.java
index 35541a6081ff..da0f4f38e290 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/update/CamelQuarkusUpdate.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/update/CamelQuarkusUpdate.java
@@ -41,7 +41,7 @@ public final class CamelQuarkusUpdate implements Update {
      *
      * @return
      */
-    public String getQuarkusStream() {
+    public String getQuarkusStream() throws CamelUpdateException {
         // Assume that the quarkus updates are in the form 3.8, 3.15, 3.16...
         List<String[]> qVersions
                 = 
downloader.resolveAvailableVersions("org.apache.camel.quarkus", 
QUARKUS_UPDATE_ARTIFACTID,
@@ -50,10 +50,19 @@ public final class CamelQuarkusUpdate implements Update {
         String streamVersion = null;
         for (String[] qVersion : qVersions) {
             if (qVersion[0].equals(updateMixin.version)) {
-                streamVersion = qVersion[1].substring(0, 
qVersion[1].lastIndexOf('.'));
+                int dotIdx = qVersion[1].lastIndexOf('.');
+                if (dotIdx > 0) {
+                    streamVersion = qVersion[1].substring(0, dotIdx);
+                }
             }
         }
 
+        if (streamVersion == null) {
+            throw new CamelUpdateException(
+                    "Cannot determine Quarkus stream version for Camel version 
" + updateMixin.version
+                                           + ". No matching entry found in 
camel-quarkus-catalog.");
+        }
+
         return streamVersion;
     }
 
@@ -79,7 +88,7 @@ public final class CamelQuarkusUpdate implements Update {
 
     @Override
     public List<String> command() throws CamelUpdateException {
-        commands.add(mvnProgramCall());
+        commands.addAll(mvnProgramCall());
         commands.add(debug());
         MavenGav gav = updateMixin.resolveQuarkusMavenPlugin();
         commands.add(String.format(
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/update/CamelUpdate.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/update/CamelUpdate.java
index 591275beb6a3..d3e927c7c2cf 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/update/CamelUpdate.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/update/CamelUpdate.java
@@ -120,7 +120,7 @@ public final class CamelUpdate implements Update {
 
     @Override
     public List<String> command() throws CamelUpdateException {
-        commands.add(mvnProgramCall());
+        commands.addAll(mvnProgramCall());
         commands.add(debug());
         commands.add("org.openrewrite.maven:rewrite-maven-plugin:" + 
updateMixin.openRewriteVersion + ":"
                      + runMode());
@@ -158,7 +158,7 @@ public final class CamelUpdate implements Update {
          * @return an Optional containing the recipe name if it is a Camel 
upgrade recipe, otherwise empty
          */
         public Optional<String> recipeName() {
-            return Arrays.stream(content().split(System.lineSeparator()))
+            return Arrays.stream(content().split("\\R"))
                     .filter(l -> l.startsWith("name") && 
l.contains("org.apache.camel.upgrade"))
                     .map(l -> 
l.substring(l.indexOf("org.apache.camel.upgrade")))
                     .findFirst();
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/update/Update.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/update/Update.java
index 9bd5714d230c..a407bb194b91 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/update/Update.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/update/Update.java
@@ -42,14 +42,11 @@ public sealed interface Update permits CamelUpdate, 
CamelQuarkusUpdate {
 
     String getArtifactCoordinates();
 
-    default String mvnProgramCall() {
-        String mvnProgramCall;
+    default List<String> mvnProgramCall() {
         if (FileUtil.isWindows()) {
-            mvnProgramCall = "cmd /c mvn";
+            return List.of("cmd", "/c", "mvn");
         } else {
-            mvnProgramCall = "mvn";
+            return List.of("mvn");
         }
-
-        return mvnProgramCall;
     }
 }
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/update/UpdateList.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/update/UpdateList.java
index 739aafdce5ca..9dafbe038f69 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/update/UpdateList.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/update/UpdateList.java
@@ -158,10 +158,11 @@ public class UpdateList extends CamelCommand {
             // Translate quarkus versions to Camel
             recipesVersions.camelQuarkusRecipesVersions();
             recipesVersions.quarkusUpdateRecipes().forEach(l -> {
-                List<String[]> runtimeVersions = 
recipesVersions.qVersions().stream().filter(v -> v[1].startsWith(l.version()))
+                List<String[]> runtimeVersions = 
recipesVersions.qVersions().stream()
+                        .filter(v -> v[1].equals(l.version()) || 
v[1].startsWith(l.version() + "."))
                         .collect(Collectors.toList());
                 if (!runtimeVersions.isEmpty()) {
-                    runtimeVersions.sort(Comparator.comparing(o -> o[1]));
+                    runtimeVersions.sort(Comparator.comparing(o -> new 
ComparableVersion(o[1])));
                     String[] runtimeVersion = 
runtimeVersions.get(runtimeVersions.size() - 1);
                     // Quarkus may release patches independently, therefore, 
we do not know the real micro version
                     String quarkusVersion = runtimeVersion[1];
@@ -320,8 +321,9 @@ public class UpdateList extends CamelCommand {
                         /* Quarkus specific, maybe in the future can be 
removed */
                         && !name.contains("alpha")) {
 
-                    String content = new 
String(jarFile.getInputStream(jarEntry).readAllBytes());
-                    String description = 
Arrays.stream(content.split(System.lineSeparator()))
+                    String content = new String(
+                            jarFile.getInputStream(jarEntry).readAllBytes(), 
java.nio.charset.StandardCharsets.UTF_8);
+                    String description = Arrays.stream(content.split("\\R"))
                             .filter(l -> l.startsWith("description"))
                             .map(l -> l.substring(l.indexOf(":") + 1).trim())
                             .findFirst().orElse("");
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/update/UpdateRun.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/update/UpdateRun.java
index ee7f0191296f..e12d9785bb9c 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/update/UpdateRun.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/update/UpdateRun.java
@@ -99,9 +99,7 @@ public class UpdateRun extends CamelCommand {
             }
         }
 
-        executeCommand(command);
-
-        return 0;
+        return executeCommand(command);
     }
 
     /**
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 3f0025c298c8..b879aec3bf4b 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
@@ -214,12 +214,12 @@ public class VersionList extends CamelCommand {
                 if (eol != null) {
                     try {
                         Date d = sdf.parse(r.eolDate);
-                        return d.before(now);
+                        return d.after(now);
                     } catch (Exception e) {
                         // ignore
                     }
                 }
-                return false;
+                return true;
             });
         }
 

Reply via email to