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

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


The following commit(s) were added to refs/heads/main by this push:
     new 4a1d3549dd8 chore(jbang): Use runtime type enum in all commands
4a1d3549dd8 is described below

commit 4a1d3549dd8aad68e727a31ac7205ecf84bec823
Author: Christoph Deppisch <cdeppi...@redhat.com>
AuthorDate: Wed Jul 3 09:50:48 2024 +0200

    chore(jbang): Use runtime type enum in all commands
    
    - Use central runtime types enumeration (quarkus, spring-boot, camel-main)
    - Use one single place to hold the default runtime version for the 
individual runtime providers
---
 .../dsl/jbang/core/commands/DependencyList.java    | 30 +++++++-----
 .../camel/dsl/jbang/core/commands/Export.java      | 28 +++++++----
 .../dsl/jbang/core/commands/ExportBaseCommand.java | 16 ++++---
 .../apache/camel/dsl/jbang/core/commands/Run.java  | 19 +++++---
 .../dsl/jbang/core/commands/SBOMGenerator.java     | 30 +++++++-----
 .../core/commands/catalog/CatalogBaseCommand.java  | 16 ++++---
 .../jbang/core/commands/catalog/CatalogDoc.java    | 14 ++++--
 .../jbang/core/commands/version/VersionList.java   | 24 ++++++----
 .../jbang/core/commands/version/VersionSet.java    | 10 ++--
 .../camel/dsl/jbang/core/common/RuntimeType.java   | 54 ++++++++++++++++++++++
 .../jbang/core/common}/RuntimeTypeConverter.java   |  2 +-
 .../core/commands/generate/CodeRestGenerator.java  | 12 +++--
 .../camel/dsl/jbang/core/commands/k/Agent.java     | 13 ++++--
 .../jbang/core/commands/k/support/RuntimeType.java | 38 ---------------
 14 files changed, 188 insertions(+), 118 deletions(-)

diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/DependencyList.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/DependencyList.java
index e59ce15ed94..0ef740f7420 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/DependencyList.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/DependencyList.java
@@ -29,6 +29,7 @@ import org.w3c.dom.Element;
 import org.w3c.dom.NodeList;
 
 import org.apache.camel.dsl.jbang.core.common.CommandLineHelper;
+import org.apache.camel.dsl.jbang.core.common.RuntimeType;
 import org.apache.camel.dsl.jbang.core.common.RuntimeUtil;
 import org.apache.camel.dsl.jbang.core.common.XmlHelper;
 import org.apache.camel.tooling.maven.MavenGav;
@@ -185,8 +186,8 @@ public class DependencyList extends Export {
         if (profile.exists()) {
             Properties prop = new CamelCaseOrderedProperties();
             RuntimeUtil.loadProperties(prop, profile);
-            if (this.runtime == null) {
-                this.runtime = prop.getProperty("camel.jbang.runtime");
+            if (this.runtime == null && 
prop.containsKey("camel.jbang.runtime")) {
+                this.runtime = 
RuntimeType.fromValue(prop.getProperty("camel.jbang.runtime"));
             }
             if (this.gav == null) {
                 this.gav = prop.getProperty("camel.jbang.gav");
@@ -208,19 +209,24 @@ public class DependencyList extends Export {
             gav = "org.apache.camel:camel-jbang-dummy:1.0";
         }
         if (runtime == null) {
-            runtime = "camel-main";
+            runtime = RuntimeType.main;
         }
 
         // turn off noise
-        if ("spring-boot".equals(runtime) || 
"camel-spring-boot".equals(runtime)) {
-            return export(new ExportSpringBoot(getMain()));
-        } else if ("quarkus".equals(runtime) || 
"camel-quarkus".equals(runtime)) {
-            return export(new ExportQuarkus(getMain()));
-        } else if ("main".equals(runtime) || "camel-main".equals(runtime)) {
-            return export(new ExportCamelMain(getMain()));
-        } else {
-            System.err.println("Unknown runtime: " + runtime);
-            return 1;
+        switch (runtime) {
+            case springBoot -> {
+                return export(new ExportSpringBoot(getMain()));
+            }
+            case quarkus -> {
+                return export(new ExportQuarkus(getMain()));
+            }
+            case main -> {
+                return export(new ExportCamelMain(getMain()));
+            }
+            default -> {
+                System.err.println("Unknown runtime: " + runtime);
+                return 1;
+            }
         }
     }
 
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 650de02b114..5860c743910 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
@@ -20,6 +20,7 @@ import java.io.File;
 import java.util.Comparator;
 import java.util.Properties;
 
+import org.apache.camel.dsl.jbang.core.common.RuntimeType;
 import org.apache.camel.dsl.jbang.core.common.RuntimeUtil;
 import org.apache.camel.tooling.maven.MavenGav;
 import org.apache.camel.util.CamelCaseOrderedProperties;
@@ -51,15 +52,20 @@ public class Export extends ExportBaseCommand {
             return 1;
         }
 
-        if ("spring-boot".equals(runtime) || 
"camel-spring-boot".equals(runtime)) {
-            return export(new ExportSpringBoot(getMain()));
-        } else if ("quarkus".equals(runtime) || 
"camel-quarkus".equals(runtime)) {
-            return export(new ExportQuarkus(getMain()));
-        } else if ("main".equals(runtime) || "camel-main".equals(runtime)) {
-            return export(new ExportCamelMain(getMain()));
-        } else {
-            System.err.println("Unknown runtime: " + runtime);
-            return 1;
+        switch (runtime) {
+            case springBoot -> {
+                return export(new ExportSpringBoot(getMain()));
+            }
+            case quarkus -> {
+                return export(new ExportQuarkus(getMain()));
+            }
+            case main -> {
+                return export(new ExportCamelMain(getMain()));
+            }
+            default -> {
+                System.err.println("Unknown runtime: " + runtime);
+                return 1;
+            }
         }
     }
 
@@ -68,7 +74,9 @@ public class Export extends ExportBaseCommand {
             Properties prop = new CamelCaseOrderedProperties();
             RuntimeUtil.loadProperties(prop, file);
             // read runtime and gav from profile if not configured
-            this.runtime = prop.getProperty("camel.jbang.runtime", 
this.runtime);
+            if (prop.containsKey("camel.jbang.runtime")) {
+                this.runtime = 
RuntimeType.fromValue(prop.getProperty("camel.jbang.runtime"));
+            }
             this.gav = prop.getProperty("camel.jbang.gav", this.gav);
             // allow configuring versions from profile
             this.javaVersion = prop.getProperty("camel.jbang.javaVersion", 
this.javaVersion);
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 31fc76f161c..6596c8cd921 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
@@ -48,6 +48,8 @@ import java.util.stream.Collectors;
 import org.apache.camel.catalog.DefaultCamelCatalog;
 import org.apache.camel.dsl.jbang.core.common.CommandLineHelper;
 import org.apache.camel.dsl.jbang.core.common.RuntimeCompletionCandidates;
+import org.apache.camel.dsl.jbang.core.common.RuntimeType;
+import org.apache.camel.dsl.jbang.core.common.RuntimeTypeConverter;
 import org.apache.camel.dsl.jbang.core.common.RuntimeUtil;
 import org.apache.camel.dsl.jbang.core.common.VersionHelper;
 import org.apache.camel.tooling.maven.MavenArtifact;
@@ -95,9 +97,11 @@ abstract class ExportBaseCommand extends CamelCommand {
             "--dep", "--deps" }, description = "Add additional dependencies 
(Use commas to separate multiple dependencies).")
     protected String dependencies;
 
-    @CommandLine.Option(names = { "--runtime" }, completionCandidates = 
RuntimeCompletionCandidates.class,
+    @CommandLine.Option(names = { "--runtime" },
+                        completionCandidates = 
RuntimeCompletionCandidates.class,
+                        converter = RuntimeTypeConverter.class,
                         description = "Runtime (${COMPLETION-CANDIDATES})")
-    protected String runtime;
+    protected RuntimeType runtime;
 
     @CommandLine.Option(names = { "--gav" }, description = "The Maven 
group:artifact:version")
     protected String gav;
@@ -148,8 +152,8 @@ abstract class ExportBaseCommand extends CamelCommand {
     protected String localKameletDir;
 
     @CommandLine.Option(names = { "--spring-boot-version" }, description = 
"Spring Boot version",
-                        defaultValue = "3.3.1")
-    protected String springBootVersion = "3.3.1";
+                        defaultValue = RuntimeType.SPRING_BOOT_VERSION)
+    protected String springBootVersion = RuntimeType.SPRING_BOOT_VERSION;
 
     @CommandLine.Option(names = { "--camel-spring-boot-version" }, description 
= "Camel version to use with Spring Boot")
     protected String camelSpringBootVersion;
@@ -163,8 +167,8 @@ abstract class ExportBaseCommand extends CamelCommand {
     protected String quarkusArtifactId = "quarkus-bom";
 
     @CommandLine.Option(names = { "--quarkus-version" }, description = 
"Quarkus Platform version",
-                        defaultValue = "3.12.0")
-    protected String quarkusVersion = "3.12.0";
+                        defaultValue = RuntimeType.QUARKUS_VERSION)
+    protected String quarkusVersion = RuntimeType.QUARKUS_VERSION;
 
     @CommandLine.Option(names = { "--maven-wrapper" }, defaultValue = "true",
                         description = "Include Maven Wrapper files in exported 
project")
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 21789d01a01..d7fcb089a70 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
@@ -51,6 +51,8 @@ import org.apache.camel.catalog.DefaultCamelCatalog;
 import org.apache.camel.dsl.jbang.core.common.CommandLineHelper;
 import org.apache.camel.dsl.jbang.core.common.LoggingLevelCompletionCandidates;
 import org.apache.camel.dsl.jbang.core.common.RuntimeCompletionCandidates;
+import org.apache.camel.dsl.jbang.core.common.RuntimeType;
+import org.apache.camel.dsl.jbang.core.common.RuntimeTypeConverter;
 import org.apache.camel.dsl.jbang.core.common.RuntimeUtil;
 import org.apache.camel.dsl.jbang.core.common.VersionHelper;
 import org.apache.camel.main.KameletMain;
@@ -120,9 +122,12 @@ public class Run extends CamelCommand {
 
     public List<String> files = new ArrayList<>();
 
-    @Option(names = { "--runtime" }, completionCandidates = 
RuntimeCompletionCandidates.class,
-            defaultValue = "camel-main", description = "Runtime 
(${COMPLETION-CANDIDATES})")
-    String runtime = "camel-main";
+    @Option(names = { "--runtime" },
+            completionCandidates = RuntimeCompletionCandidates.class,
+            defaultValue = "camel-main",
+            converter = RuntimeTypeConverter.class,
+            description = "Runtime (${COMPLETION-CANDIDATES})")
+    RuntimeType runtime = RuntimeType.main;
 
     @Option(names = { "--source-dir" },
             description = "Source directory for dynamically loading Camel 
file(s) to run. When using this, then files cannot be specified at the same 
time.")
@@ -141,12 +146,12 @@ public class Run extends CamelCommand {
     String kameletsVersion;
 
     @Option(names = { "--quarkus-version" }, description = "Quarkus Platform 
version",
-            defaultValue = "3.12.0")
-    String quarkusVersion = "3.12.0";
+            defaultValue = RuntimeType.QUARKUS_VERSION)
+    String quarkusVersion = RuntimeType.QUARKUS_VERSION;
 
     @Option(names = { "--spring-boot-version" }, description = "Spring Boot 
version",
-            defaultValue = "3.3.1")
-    String springBootVersion = "3.3.1";
+            defaultValue = RuntimeType.SPRING_BOOT_VERSION)
+    String springBootVersion = RuntimeType.SPRING_BOOT_VERSION;
 
     @Option(names = { "--profile" }, scope = CommandLine.ScopeType.INHERIT, 
defaultValue = "dev",
             description = "Profile to run (dev, test, or prod).")
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 185ff0ac530..260d343db2d 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
@@ -22,6 +22,7 @@ import java.util.Properties;
 import java.util.concurrent.TimeUnit;
 
 import org.apache.camel.dsl.jbang.core.common.CommandLineHelper;
+import org.apache.camel.dsl.jbang.core.common.RuntimeType;
 import org.apache.camel.dsl.jbang.core.common.RuntimeUtil;
 import org.apache.camel.util.CamelCaseOrderedProperties;
 import org.apache.camel.util.FileUtil;
@@ -149,8 +150,8 @@ public class SBOMGenerator extends Export {
         if (profile.exists()) {
             Properties prop = new CamelCaseOrderedProperties();
             RuntimeUtil.loadProperties(prop, profile);
-            if (this.runtime == null) {
-                this.runtime = prop.getProperty("camel.jbang.runtime");
+            if (this.runtime == null && 
prop.containsKey("camel.jbang.runtime")) {
+                this.runtime = 
RuntimeType.fromValue(prop.getProperty("camel.jbang.runtime"));
             }
             if (this.gav == null) {
                 this.gav = prop.getProperty("camel.jbang.gav");
@@ -172,18 +173,23 @@ public class SBOMGenerator extends Export {
             gav = "org.apache.camel:camel-jbang-export:1.0";
         }
         if (runtime == null) {
-            runtime = "camel-main";
+            runtime = RuntimeType.main;
         }
 
-        if ("spring-boot".equals(runtime) || 
"camel-spring-boot".equals(runtime)) {
-            return export(new ExportSpringBoot(getMain()));
-        } else if ("quarkus".equals(runtime) || 
"camel-quarkus".equals(runtime)) {
-            return export(new ExportQuarkus(getMain()));
-        } else if ("main".equals(runtime) || "camel-main".equals(runtime)) {
-            return export(new ExportCamelMain(getMain()));
-        } else {
-            System.err.println("Unknown runtime: " + runtime);
-            return 1;
+        switch (runtime) {
+            case springBoot -> {
+                return export(new ExportSpringBoot(getMain()));
+            }
+            case quarkus -> {
+                return export(new ExportQuarkus(getMain()));
+            }
+            case main -> {
+                return export(new ExportCamelMain(getMain()));
+            }
+            default -> {
+                System.err.println("Unknown runtime: " + runtime);
+                return 1;
+            }
         }
     }
 }
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/catalog/CatalogBaseCommand.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/catalog/CatalogBaseCommand.java
index eb4ca931045..6e28cec1cb7 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/catalog/CatalogBaseCommand.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/catalog/CatalogBaseCommand.java
@@ -32,6 +32,8 @@ import org.apache.camel.dsl.jbang.core.commands.CamelCommand;
 import org.apache.camel.dsl.jbang.core.commands.CamelJBangMain;
 import org.apache.camel.dsl.jbang.core.common.CatalogLoader;
 import org.apache.camel.dsl.jbang.core.common.RuntimeCompletionCandidates;
+import org.apache.camel.dsl.jbang.core.common.RuntimeType;
+import org.apache.camel.dsl.jbang.core.common.RuntimeTypeConverter;
 import org.apache.camel.dsl.jbang.core.common.VersionHelper;
 import org.apache.camel.tooling.maven.MavenGav;
 import org.apache.camel.tooling.model.ArtifactModel;
@@ -44,12 +46,14 @@ public abstract class CatalogBaseCommand extends 
CamelCommand {
                         description = "To use a different Camel version than 
the default version")
     String camelVersion;
 
-    @CommandLine.Option(names = { "--runtime" }, completionCandidates = 
RuntimeCompletionCandidates.class,
+    @CommandLine.Option(names = { "--runtime" },
+                        completionCandidates = 
RuntimeCompletionCandidates.class,
+                        converter = RuntimeTypeConverter.class,
                         description = "Runtime (${COMPLETION-CANDIDATES})")
-    String runtime;
+    RuntimeType runtime;
 
     @CommandLine.Option(names = { "--quarkus-version" }, description = 
"Quarkus Platform version",
-                        defaultValue = "3.12.0")
+                        defaultValue = RuntimeType.QUARKUS_VERSION)
     String quarkusVersion;
 
     @CommandLine.Option(names = { "--quarkus-group-id" }, description = 
"Quarkus Platform Maven groupId",
@@ -97,9 +101,9 @@ public abstract class CatalogBaseCommand extends 
CamelCommand {
     }
 
     CamelCatalog loadCatalog() throws Exception {
-        if ("spring-boot".equals(runtime)) {
+        if (RuntimeType.springBoot == runtime) {
             return CatalogLoader.loadSpringBootCatalog(repos, camelVersion);
-        } else if ("quarkus".equals(runtime)) {
+        } else if (RuntimeType.quarkus == runtime) {
             return CatalogLoader.loadQuarkusCatalog(repos, quarkusVersion, 
quarkusGroupId);
         }
         if (camelVersion == null) {
@@ -152,7 +156,7 @@ public abstract class CatalogBaseCommand extends 
CamelCommand {
                         new 
Column().header("ARTIFACT-ID").visible(gav).dataAlign(HorizontalAlign.LEFT).with(this::shortGav),
                         new 
Column().header("LEVEL").dataAlign(HorizontalAlign.LEFT).with(r -> r.level),
                         new 
Column().header("NATIVE").dataAlign(HorizontalAlign.CENTER)
-                                
.visible("quarkus".equals(runtime)).with(this::nativeSupported),
+                                .visible(RuntimeType.quarkus == 
runtime).with(this::nativeSupported),
                         new 
Column().header("SINCE").dataAlign(HorizontalAlign.RIGHT).with(r -> r.since),
                         new 
Column().header("DESCRIPTION").dataAlign(HorizontalAlign.LEFT).with(this::shortDescription))));
             }
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/catalog/CatalogDoc.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/catalog/CatalogDoc.java
index 9ceb7cdf571..936c3efe74e 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/catalog/CatalogDoc.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/catalog/CatalogDoc.java
@@ -34,6 +34,8 @@ import org.apache.camel.dsl.jbang.core.commands.CamelCommand;
 import org.apache.camel.dsl.jbang.core.commands.CamelJBangMain;
 import org.apache.camel.dsl.jbang.core.common.CatalogLoader;
 import org.apache.camel.dsl.jbang.core.common.RuntimeCompletionCandidates;
+import org.apache.camel.dsl.jbang.core.common.RuntimeType;
+import org.apache.camel.dsl.jbang.core.common.RuntimeTypeConverter;
 import org.apache.camel.main.util.SuggestSimilarHelper;
 import org.apache.camel.tooling.maven.MavenGav;
 import org.apache.camel.tooling.model.BaseOptionModel;
@@ -59,12 +61,14 @@ public class CatalogDoc extends CamelCommand {
                         description = "To use a different Camel version than 
the default version")
     String camelVersion;
 
-    @CommandLine.Option(names = { "--runtime" }, completionCandidates = 
RuntimeCompletionCandidates.class,
+    @CommandLine.Option(names = { "--runtime" },
+                        completionCandidates = 
RuntimeCompletionCandidates.class,
+                        converter = RuntimeTypeConverter.class,
                         description = "Runtime (${COMPLETION-CANDIDATES})")
-    String runtime;
+    RuntimeType runtime;
 
     @CommandLine.Option(names = { "--quarkus-version" }, description = 
"Quarkus Platform version",
-                        defaultValue = "3.12.0")
+                        defaultValue = RuntimeType.QUARKUS_VERSION)
     String quarkusVersion;
 
     @CommandLine.Option(names = { "--quarkus-group-id" }, description = 
"Quarkus Platform Maven groupId",
@@ -104,9 +108,9 @@ public class CatalogDoc extends CamelCommand {
     }
 
     CamelCatalog loadCatalog() throws Exception {
-        if ("spring-boot".equals(runtime)) {
+        if (RuntimeType.springBoot == runtime) {
             return CatalogLoader.loadSpringBootCatalog(repos, camelVersion);
-        } else if ("quarkus".equals(runtime)) {
+        } else if (RuntimeType.quarkus == runtime) {
             return CatalogLoader.loadQuarkusCatalog(repos, quarkusVersion, 
quarkusGroupId);
         }
         if (camelVersion == null) {
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 4be1d3db4a4..d3bf909fc89 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
@@ -39,6 +39,8 @@ import org.apache.camel.catalog.DefaultCamelCatalog;
 import org.apache.camel.dsl.jbang.core.commands.CamelCommand;
 import org.apache.camel.dsl.jbang.core.commands.CamelJBangMain;
 import org.apache.camel.dsl.jbang.core.common.RuntimeCompletionCandidates;
+import org.apache.camel.dsl.jbang.core.common.RuntimeType;
+import org.apache.camel.dsl.jbang.core.common.RuntimeTypeConverter;
 import org.apache.camel.dsl.jbang.core.common.VersionHelper;
 import org.apache.camel.main.KameletMain;
 import org.apache.camel.main.download.MavenDependencyDownloader;
@@ -58,9 +60,11 @@ public class VersionList extends CamelCommand {
     private static final String GIT_CAMEL_QUARKUS_URL
             = 
"https://raw.githubusercontent.com/apache/camel-website/main/content/releases/q/release-%s.md";;
 
-    @CommandLine.Option(names = { "--runtime" }, completionCandidates = 
RuntimeCompletionCandidates.class,
+    @CommandLine.Option(names = { "--runtime" },
+                        completionCandidates = 
RuntimeCompletionCandidates.class,
+                        converter = RuntimeTypeConverter.class,
                         description = "Runtime (${COMPLETION-CANDIDATES})")
-    String runtime;
+    RuntimeType runtime;
 
     @CommandLine.Option(names = { "--from-version" },
                         description = "Filter by Camel version (inclusive)", 
defaultValue = "4.0.0")
@@ -102,10 +106,10 @@ public class VersionList extends CamelCommand {
 
             String g = "org.apache.camel";
             String a = "camel-catalog";
-            if ("spring-boot".equalsIgnoreCase(runtime)) {
+            if (RuntimeType.springBoot == runtime) {
                 g = "org.apache.camel.springboot";
                 a = "camel-spring-boot";
-            } else if ("quarkus".equalsIgnoreCase(runtime)) {
+            } else if (RuntimeType.quarkus == runtime) {
                 g = "org.apache.camel.quarkus";
                 a = "camel-quarkus-catalog";
             }
@@ -137,7 +141,7 @@ public class VersionList extends CamelCommand {
         }
 
         CamelCatalog catalog = new DefaultCamelCatalog();
-        List<ReleaseModel> releases = "quarkus".equals(runtime) ? 
catalog.camelQuarkusReleases() : catalog.camelReleases();
+        List<ReleaseModel> releases = RuntimeType.quarkus == runtime ? 
catalog.camelQuarkusReleases() : catalog.camelReleases();
 
         List<Row> rows = new ArrayList<>();
         for (String[] v : versions) {
@@ -147,7 +151,7 @@ public class VersionList extends CamelCommand {
             row.runtimeVersion = v[1];
 
             // enrich with details from catalog (if we can find any)
-            String catalogVersion = "quarkus".equals(runtime) ? v[1] : v[0];
+            String catalogVersion = RuntimeType.quarkus == runtime ? v[1] : 
v[0];
             ReleaseModel rm = releases.stream().filter(r -> 
catalogVersion.equals(r.getVersion())).findFirst().orElse(null);
             if (rm == null) {
                 // unknown release but if it's an Apache Camel release we can 
grab from online
@@ -175,9 +179,9 @@ public class VersionList extends CamelCommand {
         printer().println(AsciiTable.getTable(AsciiTable.NO_BORDERS, rows, 
Arrays.asList(
                 new Column().header("CAMEL VERSION")
                         
.headerAlign(HorizontalAlign.CENTER).dataAlign(HorizontalAlign.CENTER).with(r 
-> r.coreVersion),
-                new 
Column().header("QUARKUS").visible("quarkus".equalsIgnoreCase(runtime))
+                new Column().header("QUARKUS").visible(RuntimeType.quarkus == 
runtime)
                         
.headerAlign(HorizontalAlign.CENTER).dataAlign(HorizontalAlign.CENTER).with(r 
-> r.runtimeVersion),
-                new 
Column().header("SPRING-BOOT").visible("spring-boot".equalsIgnoreCase(runtime))
+                new 
Column().header("SPRING-BOOT").visible(RuntimeType.springBoot == runtime)
                         
.headerAlign(HorizontalAlign.CENTER).dataAlign(HorizontalAlign.CENTER).with(r 
-> r.runtimeVersion),
                 new Column().header("JDK")
                         
.headerAlign(HorizontalAlign.CENTER).dataAlign(HorizontalAlign.RIGHT).with(this::jdkVersion),
@@ -259,8 +263,8 @@ public class VersionList extends CamelCommand {
         return VersionHelper.isGE(version, fromVersion);
     }
 
-    private ReleaseModel onlineRelease(String runtime, String coreVersion) 
throws Exception {
-        String gitUrl = String.format("quarkus".equals(runtime) ? 
GIT_CAMEL_QUARKUS_URL : GIT_CAMEL_URL, coreVersion);
+    private ReleaseModel onlineRelease(RuntimeType runtime, String 
coreVersion) throws Exception {
+        String gitUrl = String.format(RuntimeType.quarkus == runtime ? 
GIT_CAMEL_QUARKUS_URL : GIT_CAMEL_URL, coreVersion);
 
         HttpClient hc = HttpClient.newHttpClient();
         HttpResponse<String> res = hc.send(HttpRequest.newBuilder(new 
URI(gitUrl)).timeout(Duration.ofSeconds(20)).build(),
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/version/VersionSet.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/version/VersionSet.java
index aa620b3bc5a..3d8304b103f 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/version/VersionSet.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/version/VersionSet.java
@@ -20,6 +20,8 @@ import org.apache.camel.dsl.jbang.core.commands.CamelCommand;
 import org.apache.camel.dsl.jbang.core.commands.CamelJBangMain;
 import org.apache.camel.dsl.jbang.core.common.CommandLineHelper;
 import org.apache.camel.dsl.jbang.core.common.RuntimeCompletionCandidates;
+import org.apache.camel.dsl.jbang.core.common.RuntimeType;
+import org.apache.camel.dsl.jbang.core.common.RuntimeTypeConverter;
 import picocli.CommandLine;
 
 @CommandLine.Command(name = "set", description = "Set/change current Camel 
version")
@@ -28,9 +30,11 @@ public class VersionSet extends CamelCommand {
     @CommandLine.Parameters(description = "Camel version", arity = "0..1")
     String version;
 
-    @CommandLine.Option(names = { "--runtime" }, completionCandidates = 
RuntimeCompletionCandidates.class,
+    @CommandLine.Option(names = { "--runtime" },
+                        completionCandidates = 
RuntimeCompletionCandidates.class,
+                        converter = RuntimeTypeConverter.class,
                         description = "Runtime (${COMPLETION-CANDIDATES})")
-    String runtime;
+    RuntimeType runtime;
 
     @CommandLine.Option(names = { "--repo", "--repos" }, description = "Maven 
repository for downloading the dependencies")
     String repo;
@@ -59,7 +63,7 @@ public class VersionSet extends CamelCommand {
                     properties.put("repos", repo);
                 }
                 if (runtime != null) {
-                    properties.put("runtime", runtime);
+                    properties.put("runtime", runtime.runtime());
                 }
             }
             CommandLineHelper.storeProperties(properties, printer());
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/RuntimeType.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/RuntimeType.java
new file mode 100644
index 00000000000..a51b96b2881
--- /dev/null
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/RuntimeType.java
@@ -0,0 +1,54 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements.  See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License.  You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.camel.dsl.jbang.core.common;
+
+import org.apache.camel.catalog.DefaultCamelCatalog;
+
+public enum RuntimeType {
+    springBoot,
+    quarkus,
+    main;
+
+    public static final String QUARKUS_VERSION = "3.12.0";
+    public static final String SPRING_BOOT_VERSION = "3.3.1";
+
+    public static RuntimeType fromValue(String value) {
+        return switch (value) {
+            case "spring-boot", "camel-spring-boot" -> RuntimeType.springBoot;
+            case "quarkus", "camel-quarkus" -> RuntimeType.quarkus;
+            case "main", "camel-main" -> RuntimeType.main;
+            default -> throw new IllegalArgumentException("Unsupported runtime 
" + value);
+        };
+    }
+
+    public String runtime() {
+        return switch (this) {
+            case springBoot -> "spring-boot";
+            case quarkus -> "quarkus";
+            case main -> "camel-main";
+        };
+    }
+
+    public String version() {
+        return switch (this) {
+            case springBoot -> SPRING_BOOT_VERSION;
+            case quarkus -> QUARKUS_VERSION;
+            case main -> new DefaultCamelCatalog().getCatalogVersion();
+        };
+    }
+}
diff --git 
a/dsl/camel-jbang/camel-jbang-plugin-k/src/main/java/org/apache/camel/dsl/jbang/core/commands/k/support/RuntimeTypeConverter.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/RuntimeTypeConverter.java
similarity index 94%
rename from 
dsl/camel-jbang/camel-jbang-plugin-k/src/main/java/org/apache/camel/dsl/jbang/core/commands/k/support/RuntimeTypeConverter.java
rename to 
dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/RuntimeTypeConverter.java
index c630aaa18fb..e2784ef7f05 100644
--- 
a/dsl/camel-jbang/camel-jbang-plugin-k/src/main/java/org/apache/camel/dsl/jbang/core/commands/k/support/RuntimeTypeConverter.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/RuntimeTypeConverter.java
@@ -15,7 +15,7 @@
  * limitations under the License.
  */
 
-package org.apache.camel.dsl.jbang.core.commands.k.support;
+package org.apache.camel.dsl.jbang.core.common;
 
 import picocli.CommandLine;
 
diff --git 
a/dsl/camel-jbang/camel-jbang-plugin-generate/src/main/java/org/apache/camel/dsl/jbang/core/commands/generate/CodeRestGenerator.java
 
b/dsl/camel-jbang/camel-jbang-plugin-generate/src/main/java/org/apache/camel/dsl/jbang/core/commands/generate/CodeRestGenerator.java
index b6e7fe90416..173f42069ae 100644
--- 
a/dsl/camel-jbang/camel-jbang-plugin-generate/src/main/java/org/apache/camel/dsl/jbang/core/commands/generate/CodeRestGenerator.java
+++ 
b/dsl/camel-jbang/camel-jbang-plugin-generate/src/main/java/org/apache/camel/dsl/jbang/core/commands/generate/CodeRestGenerator.java
@@ -27,6 +27,9 @@ import io.swagger.v3.parser.OpenAPIV3Parser;
 import org.apache.camel.CamelContext;
 import org.apache.camel.dsl.jbang.core.commands.CamelCommand;
 import org.apache.camel.dsl.jbang.core.commands.CamelJBangMain;
+import org.apache.camel.dsl.jbang.core.common.RuntimeCompletionCandidates;
+import org.apache.camel.dsl.jbang.core.common.RuntimeType;
+import org.apache.camel.dsl.jbang.core.common.RuntimeTypeConverter;
 import org.apache.camel.generator.openapi.RestDslGenerator;
 import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.logging.log4j.Level;
@@ -52,9 +55,12 @@ public class CodeRestGenerator extends CamelCommand {
     private boolean generateRoutes;
     @CommandLine.Option(names = { "--dto" }, description = "Generate Java Data 
Objects")
     private boolean generateDataObjects;
-    @CommandLine.Option(names = { "--runtime" }, description = "Runtime 
(quarkus, or spring-boot)",
-                        defaultValue = "quarkus")
-    private String runtime;
+    @CommandLine.Option(names = { "--runtime" },
+                        completionCandidates = 
RuntimeCompletionCandidates.class,
+                        converter = RuntimeTypeConverter.class,
+                        defaultValue = "quarkus",
+                        description = "Runtime (${COMPLETION-CANDIDATES})")
+    RuntimeType runtime = RuntimeType.quarkus;
     @CommandLine.Option(names = { "--package" }, description = "Package for 
generated Java models",
                         defaultValue = "model")
     private String packageName;
diff --git 
a/dsl/camel-jbang/camel-jbang-plugin-k/src/main/java/org/apache/camel/dsl/jbang/core/commands/k/Agent.java
 
b/dsl/camel-jbang/camel-jbang-plugin-k/src/main/java/org/apache/camel/dsl/jbang/core/commands/k/Agent.java
index 0743e204e08..0d8a56809a7 100644
--- 
a/dsl/camel-jbang/camel-jbang-plugin-k/src/main/java/org/apache/camel/dsl/jbang/core/commands/k/Agent.java
+++ 
b/dsl/camel-jbang/camel-jbang-plugin-k/src/main/java/org/apache/camel/dsl/jbang/core/commands/k/Agent.java
@@ -47,14 +47,15 @@ import org.apache.camel.component.kamelet.KameletEndpoint;
 import org.apache.camel.dsl.jbang.core.commands.CamelCommand;
 import org.apache.camel.dsl.jbang.core.commands.CamelJBangMain;
 import org.apache.camel.dsl.jbang.core.commands.k.support.Capability;
-import org.apache.camel.dsl.jbang.core.commands.k.support.RuntimeType;
-import org.apache.camel.dsl.jbang.core.commands.k.support.RuntimeTypeConverter;
 import org.apache.camel.dsl.jbang.core.commands.k.support.SourceMetadata;
 import 
org.apache.camel.dsl.jbang.core.commands.k.support.StubComponentResolver;
 import 
org.apache.camel.dsl.jbang.core.commands.k.support.StubDataFormatResolver;
 import org.apache.camel.dsl.jbang.core.commands.k.support.StubLanguageResolver;
 import 
org.apache.camel.dsl.jbang.core.commands.k.support.StubTransformerResolver;
 import org.apache.camel.dsl.jbang.core.common.CatalogLoader;
+import org.apache.camel.dsl.jbang.core.common.RuntimeCompletionCandidates;
+import org.apache.camel.dsl.jbang.core.common.RuntimeType;
+import org.apache.camel.dsl.jbang.core.common.RuntimeTypeConverter;
 import org.apache.camel.impl.DefaultCamelContext;
 import org.apache.camel.impl.DefaultModelReifierFactory;
 import org.apache.camel.model.CircuitBreakerDefinition;
@@ -126,9 +127,11 @@ public class Agent extends CamelCommand {
     String runtimeVersion;
 
     @CommandLine.Option(names = { "--runtime" },
+                        completionCandidates = 
RuntimeCompletionCandidates.class,
                         converter = RuntimeTypeConverter.class,
-                        description = "Runtime (spring-boot, quarkus, 
camel-main)")
-    RuntimeType runtimeType = RuntimeType.camelMain;
+                        defaultValue = "camel-main",
+                        description = "Runtime (${COMPLETION-CANDIDATES})")
+    RuntimeType runtimeType = RuntimeType.main;
 
     @CommandLine.Option(names = { "--repos" },
                         description = "Comma separated list of additional 
maven repositories")
@@ -377,7 +380,7 @@ public class Agent extends CamelCommand {
                 return CatalogLoader.loadSpringBootCatalog(repos, 
runtimeVersion);
             case quarkus:
                 return CatalogLoader.loadQuarkusCatalog(repos, runtimeVersion, 
quarkusGroupId);
-            case camelMain:
+            case main:
                 return CatalogLoader.loadCatalog(repos, runtimeVersion);
             default:
                 throw new IllegalArgumentException("Unsupported runtime: " + 
runtime);
diff --git 
a/dsl/camel-jbang/camel-jbang-plugin-k/src/main/java/org/apache/camel/dsl/jbang/core/commands/k/support/RuntimeType.java
 
b/dsl/camel-jbang/camel-jbang-plugin-k/src/main/java/org/apache/camel/dsl/jbang/core/commands/k/support/RuntimeType.java
deleted file mode 100644
index 40834ebbeba..00000000000
--- 
a/dsl/camel-jbang/camel-jbang-plugin-k/src/main/java/org/apache/camel/dsl/jbang/core/commands/k/support/RuntimeType.java
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-
-package org.apache.camel.dsl.jbang.core.commands.k.support;
-
-public enum RuntimeType {
-    springBoot,
-    quarkus,
-    camelMain;
-
-    public static RuntimeType fromValue(String value) {
-        switch (value) {
-            case "spring-boot":
-                return RuntimeType.springBoot;
-            case "quarkus":
-                return RuntimeType.quarkus;
-            case "camel-main":
-                return RuntimeType.camelMain;
-            default:
-                throw new IllegalArgumentException("Unsupported runtime " + 
value);
-        }
-
-    }
-}


Reply via email to