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 <[email protected]> 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 { [email protected](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; [email protected](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; [email protected](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; [email protected](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);
