You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2022/06/17 12:33:45 UTC
[camel] 01/02: CAMEL-18151: camel-jbang - Export should be a single command making it easier to use from ci/cd
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 2bd3abdfc7503772b487a83fcd97034c4d2d28fc
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Fri Jun 17 14:21:45 2022 +0200
CAMEL-18151: camel-jbang - Export should be a single command making it easier to use from ci/cd
---
.../dsl/jbang/core/commands/CamelJBangMain.java | 5 +--
.../camel/dsl/jbang/core/commands/Export.java | 37 ++++++++++++++++++----
.../{BaseExport.java => ExportBaseCommand.java} | 22 +++++++++++--
.../dsl/jbang/core/commands/ExportCamelMain.java | 9 +-----
.../dsl/jbang/core/commands/ExportQuarkus.java | 8 +----
.../dsl/jbang/core/commands/ExportSpringBoot.java | 13 +-------
6 files changed, 55 insertions(+), 39 deletions(-)
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/CamelJBangMain.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/CamelJBangMain.java
index 69a880c009a..fe83b9d9725 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/CamelJBangMain.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/CamelJBangMain.java
@@ -40,10 +40,7 @@ public class CamelJBangMain implements Callable<Integer> {
.addSubcommand("pipe", new CommandLine(new Pipe(main)))
.addSubcommand("generate", new CommandLine(new CodeGenerator(main))
.addSubcommand("rest", new CommandLine(new CodeRestGenerator(main))))
- .addSubcommand("export", new CommandLine(new Export(main))
- .addSubcommand("camel-main", new CommandLine(new ExportCamelMain(main)))
- .addSubcommand("spring-boot", new CommandLine(new ExportSpringBoot(main)))
- .addSubcommand("quarkus", new CommandLine(new ExportQuarkus(main))));
+ .addSubcommand("export", new CommandLine(new Export(main)));
commandLine.getCommandSpec().versionProvider(() -> {
CamelCatalog catalog = new DefaultCamelCatalog();
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 28d42a4c237..b627ea208e6 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
@@ -16,20 +16,45 @@
*/
package org.apache.camel.dsl.jbang.core.commands;
-import picocli.CommandLine;
import picocli.CommandLine.Command;
@Command(name = "export",
- description = "Export to other runtimes such as Spring Boot or Quarkus (use --help to see sub commands)")
-class Export extends CamelCommand {
+ description = "Export to other runtimes such as Spring Boot or Quarkus")
+class Export extends ExportBaseCommand {
public Export(CamelJBangMain main) {
super(main);
}
@Override
- public Integer call() throws Exception {
- new CommandLine(this).execute("--help");
- return 0;
+ protected Integer export() throws Exception {
+ if ("spring-boot".equals(runtime)) {
+ return export(new ExportSpringBoot(getMain()));
+ } else if ("quarkus".equals(runtime)) {
+ return export(new ExportQuarkus(getMain()));
+ } else if ("camel-main".equals(runtime)) {
+ return export(new ExportCamelMain(getMain()));
+ } else {
+ System.err.println("Unknown runtime: " + runtime);
+ return 1;
+ }
}
+
+ private Integer export(ExportBaseCommand cmd) throws Exception {
+ // copy properties from this to cmd
+ cmd.runtime = this.runtime;
+ cmd.gav = this.gav;
+ cmd.exportDir = this.exportDir;
+ cmd.fresh = this.fresh;
+ cmd.javaVersion = this.javaVersion;
+ cmd.kameletsVersion = this.kameletsVersion;
+ cmd.logging = this.logging;
+ cmd.loggingLevel = this.loggingLevel;
+ cmd.mainClassname = this.mainClassname;
+ cmd.quarkusVersion = this.quarkusVersion;
+ cmd.springBootVersion = this.springBootVersion;
+ // run export
+ return cmd.export();
+ }
+
}
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/BaseExport.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportBaseCommand.java
similarity index 93%
rename from dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/BaseExport.java
rename to dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportBaseCommand.java
index 80730e68534..94a9d1a0718 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/BaseExport.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportBaseCommand.java
@@ -43,7 +43,9 @@ import org.apache.camel.util.OrderedProperties;
import org.apache.camel.util.StringHelper;
import picocli.CommandLine;
-abstract class BaseExport extends CamelCommand {
+@CommandLine.Command(name = "export",
+ description = "Export to other runtimes such as Spring Boot or Quarkus")
+abstract class ExportBaseCommand extends CamelCommand {
protected static final String BUILD_DIR = ".camel-jbang/work";
@@ -54,9 +56,17 @@ abstract class BaseExport extends CamelCommand {
"camel.jbang.classpathFiles"
};
+ @CommandLine.Option(names = { "--runtime" }, description = "Runtime (spring-boot, quarkus, or camel-main)", required = true)
+ protected String runtime;
+
@CommandLine.Option(names = { "--gav" }, description = "The Maven group:artifact:version", required = true)
protected String gav;
+ @CommandLine.Option(names = { "--main-classname" },
+ description = "The class name of the Camel Main application class",
+ defaultValue = "CamelApplication")
+ protected String mainClassname;
+
@CommandLine.Option(names = { "--java-version" }, description = "Java version (11 or 17)", defaultValue = "11")
protected String javaVersion;
@@ -64,6 +74,14 @@ abstract class BaseExport extends CamelCommand {
"--kamelets-version" }, description = "Apache Camel Kamelets version", defaultValue = "0.8.1")
protected String kameletsVersion;
+ @CommandLine.Option(names = { "--spring-boot-version" }, description = "Spring Boot version",
+ defaultValue = "2.7.0")
+ protected String springBootVersion;
+
+ @CommandLine.Option(names = { "--quarkus-version" }, description = "Quarkus version",
+ defaultValue = "2.9.2.Final")
+ protected String quarkusVersion;
+
@CommandLine.Option(names = {
"-dir",
"--directory" }, description = "Directory where the project will be exported", defaultValue = ".")
@@ -79,7 +97,7 @@ abstract class BaseExport extends CamelCommand {
description = "Can be used to turn on logging (logs to file in <user home>/.camel directory)")
boolean logging;
- public BaseExport(CamelJBangMain main) {
+ public ExportBaseCommand(CamelJBangMain main) {
super(main);
}
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportCamelMain.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportCamelMain.java
index 3a512e10e36..f1f18a28a44 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportCamelMain.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportCamelMain.java
@@ -29,15 +29,8 @@ import org.apache.camel.util.FileUtil;
import org.apache.camel.util.IOHelper;
import org.apache.camel.util.OrderedProperties;
import org.apache.commons.io.FileUtils;
-import picocli.CommandLine;
-@CommandLine.Command(name = "standalone", description = "Export as standalone Camel Main project")
-class ExportCamelMain extends BaseExport {
-
- @CommandLine.Option(names = { "--main-classname" },
- description = "The class name of the Camel Main application class",
- defaultValue = "CamelApplication")
- private String mainClassname;
+class ExportCamelMain extends Export {
public ExportCamelMain(CamelJBangMain main) {
super(main);
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportQuarkus.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportQuarkus.java
index 86562143672..ff88c5e241f 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportQuarkus.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportQuarkus.java
@@ -27,14 +27,8 @@ import org.apache.camel.util.FileUtil;
import org.apache.camel.util.IOHelper;
import org.apache.camel.util.OrderedProperties;
import org.apache.commons.io.FileUtils;
-import picocli.CommandLine;
-@CommandLine.Command(name = "quarkus", description = "Export as Quarkus project")
-class ExportQuarkus extends BaseExport {
-
- @CommandLine.Option(names = { "--quarkus-version" }, description = "Quarkus version",
- defaultValue = "2.9.2.Final")
- private String quarkusVersion;
+class ExportQuarkus extends Export {
public ExportQuarkus(CamelJBangMain main) {
super(main);
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportSpringBoot.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportSpringBoot.java
index d0c0de1d16a..dc9f1ecec15 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportSpringBoot.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportSpringBoot.java
@@ -30,19 +30,8 @@ import org.apache.camel.util.FileUtil;
import org.apache.camel.util.IOHelper;
import org.apache.camel.util.OrderedProperties;
import org.apache.commons.io.FileUtils;
-import picocli.CommandLine;
-@CommandLine.Command(name = "spring-boot", description = "Export as Spring Boot project")
-class ExportSpringBoot extends BaseExport {
-
- @CommandLine.Option(names = { "--main-classname" },
- description = "The class name of the Camel Spring Boot application class",
- defaultValue = "CamelApplication")
- private String mainClassname;
-
- @CommandLine.Option(names = { "--spring-boot-version" }, description = "Spring Boot version",
- defaultValue = "2.7.0")
- private String springBootVersion;
+class ExportSpringBoot extends Export {
public ExportSpringBoot(CamelJBangMain main) {
super(main);