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:46 UTC

[camel] 02/02: CAMEL-18151: camel-jbang - Export read from application.properties runtime/gav to use

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 7d3e0924f0844b5cb64bd04f622e91658fb896a2
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Fri Jun 17 14:33:29 2022 +0200

    CAMEL-18151: camel-jbang - Export read from application.properties runtime/gav to use
---
 .../modules/ROOT/pages/camel-jbang.adoc            | 24 ++++++++++----------
 .../camel/dsl/jbang/core/commands/Export.java      | 26 ++++++++++++++++++++++
 .../dsl/jbang/core/commands/ExportBaseCommand.java |  4 ++--
 3 files changed, 40 insertions(+), 14 deletions(-)

diff --git a/docs/user-manual/modules/ROOT/pages/camel-jbang.adoc b/docs/user-manual/modules/ROOT/pages/camel-jbang.adoc
index 5d10e16088f..876f4ae3b88 100644
--- a/docs/user-manual/modules/ROOT/pages/camel-jbang.adoc
+++ b/docs/user-manual/modules/ROOT/pages/camel-jbang.adoc
@@ -611,7 +611,7 @@ runtimes of Spring Boot, Quarkus or vanilla Camel Main.
 
 === Exporting to Camel Spring Boot
 
-The command `export spring-boot` will export your current Camel JBang file(s) to a Maven based
+The command `export --runtime=spring-boot` will export your current Camel JBang file(s) to a Maven based
 Spring Boot project with files organized in `src/main/` folder structure.
 
 For example to export to Spring Boot using the Maven groupId _com.foo_ and the artifactId _acme_
@@ -619,7 +619,7 @@ and with version _1.0-SNAPSHOT_ you simply execute:
 
 [source,bash]
 ----
-camel export spring-boot --gav=com.foo:acme:1.0-SNAPSHOT
+camel export --runtime=spring-boot --gav=com.foo:acme:1.0-SNAPSHOT
 ----
 
 NOTE: This will export to the _current_ directory, meaning that files are moved into the needed folder structure.
@@ -628,14 +628,14 @@ To export to another directly (copies the files) you execute:
 
 [source,bash]
 ----
-camel export spring-boot --gav=com.foo:acme:1.0-SNAPSHOT --dir=../myproject
+camel export --runtime=spring-boot --gav=com.foo:acme:1.0-SNAPSHOT --dir=../myproject
 ----
 
-TIP: See the possible options by running: `camel export spring-boot --help` for more details.
+TIP: See the possible options by running: `camel export --help` for more details.
 
 === Exporting to Camel Quarkus
 
-The command `export quarkus` will export your current Camel JBang file(s) to a Maven based
+The command `export --runtime=quarkus` will export your current Camel JBang file(s) to a Maven based
 Quarkus project with files organized in `src/main/` folder structure.
 
 For example to export to Quarkus using the Maven groupId _com.foo_ and the artifactId _acme_
@@ -643,7 +643,7 @@ and with version _1.0-SNAPSHOT_ you simply execute:
 
 [source,bash]
 ----
-camel export quarkus --gav=com.foo:acme:1.0-SNAPSHOT
+camel export --runtime=quarkus --gav=com.foo:acme:1.0-SNAPSHOT
 ----
 
 NOTE: This will export to the _current_ directory, meaning that files are moved into the needed folder structure.
@@ -652,14 +652,14 @@ To export to another directly (copies the files) you execute:
 
 [source,bash]
 ----
-camel export quarkus --gav=com.foo:acme:1.0-SNAPSHOT --dir=../myproject
+camel export --runtime=quarkus --gav=com.foo:acme:1.0-SNAPSHOT --dir=../myproject
 ----
 
-TIP: See the possible options by running: `camel export quarkus --help` for more details.
+TIP: See the possible options by running: `camel export --help` for more details.
 
 === Exporting to Camel Main
 
-The command `export camel-main` will export your current Camel JBang file(s) to a Maven based
+The command `export --runtime=camel-main` will export your current Camel JBang file(s) to a Maven based
 vanilla Camel Main project with files organized in `src/main/` folder structure.
 
 For example to export to Camel Main using the Maven groupId _com.foo_ and the artifactId _acme_
@@ -667,7 +667,7 @@ and with version _1.0-SNAPSHOT_ you simply execute:
 
 [source,bash]
 ----
-camel export camel-main --gav=com.foo:acme:1.0-SNAPSHOT
+camel export --runtime=camel-main --gav=com.foo:acme:1.0-SNAPSHOT
 ----
 
 NOTE: This will export to the _current_ directory, meaning that files are moved into the needed folder structure.
@@ -676,10 +676,10 @@ To export to another directly (copies the files) you execute:
 
 [source,bash]
 ----
-camel export camel-main --gav=com.foo:acme:1.0-SNAPSHOT --dir=../myproject
+camel export --runtime=camel-main --gav=com.foo:acme:1.0-SNAPSHOT --dir=../myproject
 ----
 
-TIP: See the possible options by running: `camel export camel-main --help` for more details.
+TIP: See the possible options by running: `camel export --help` for more details.
 
 == Troubleshooting
 
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 b627ea208e6..0a6ae68b4fb 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,8 +16,12 @@
  */
 package org.apache.camel.dsl.jbang.core.commands;
 
+import org.apache.camel.util.OrderedProperties;
 import picocli.CommandLine.Command;
 
+import java.io.File;
+import java.io.FileInputStream;
+
 @Command(name = "export",
          description = "Export to other runtimes such as Spring Boot or Quarkus")
 class Export extends ExportBaseCommand {
@@ -28,6 +32,28 @@ class Export extends ExportBaseCommand {
 
     @Override
     protected Integer export() throws Exception {
+        // read runtime and gav from profile if not configured
+        File profile = new File(getProfile() + ".properties");
+        if (profile.exists()) {
+            OrderedProperties prop = new OrderedProperties();
+            prop.load(new FileInputStream(profile));
+            if (this.runtime == null) {
+                this.runtime = prop.getProperty("camel.jbang.runtime");
+            }
+            if (this.gav == null) {
+                this.gav = prop.getProperty("camel.jbang.gav");
+            }
+        }
+
+        if (runtime == null) {
+            System.err.println("The runtime option must be specified");
+            return 1;
+        }
+        if (gav == null) {
+            System.err.println("The gav option must be specified");
+            return 1;
+        }
+
         if ("spring-boot".equals(runtime)) {
             return export(new ExportSpringBoot(getMain()));
         } else if ("quarkus".equals(runtime)) {
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 94a9d1a0718..b84181d6295 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
@@ -56,10 +56,10 @@ abstract class ExportBaseCommand extends CamelCommand {
             "camel.jbang.classpathFiles"
     };
 
-    @CommandLine.Option(names = { "--runtime" }, description = "Runtime (spring-boot, quarkus, or camel-main)", required = true)
+    @CommandLine.Option(names = { "--runtime" }, description = "Runtime (spring-boot, quarkus, or camel-main)")
     protected String runtime;
 
-    @CommandLine.Option(names = { "--gav" }, description = "The Maven group:artifact:version", required = true)
+    @CommandLine.Option(names = { "--gav" }, description = "The Maven group:artifact:version")
     protected String gav;
 
     @CommandLine.Option(names = { "--main-classname" },