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 2023/05/17 07:09:34 UTC

[camel] branch camel-3.x updated (3c5f4db6ea4 -> 8be2f35ba7c)

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

davsclaus pushed a change to branch camel-3.x
in repository https://gitbox.apache.org/repos/asf/camel.git


    from 3c5f4db6ea4 CAMEL-19361: camel-yaml-dsl/camel-jbang - Running KameletBinding should read properties/environment traits
     new 4ebd67ae36e CAMEL-19360: camel-jbang - Export a set of files
     new 8be2f35ba7c CAMEL-19360: camel-jbang - Export a set of files

The 2 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails.  The revisions
listed as "add" were already present in the repository and have only
been added to this reference.


Summary of changes:
 .../modules/ROOT/pages/camel-jbang.adoc            | 23 ++++++++++++++++++++++
 .../camel/dsl/jbang/core/commands/Export.java      |  1 +
 .../dsl/jbang/core/commands/ExportBaseCommand.java | 21 +++++++++++++++++++-
 .../dsl/jbang/core/commands/ExportCamelMain.java   |  4 ++--
 .../dsl/jbang/core/commands/ExportQuarkus.java     |  2 +-
 .../dsl/jbang/core/commands/ExportSpringBoot.java  |  2 +-
 .../apache/camel/dsl/jbang/core/commands/Init.java |  2 +-
 7 files changed, 49 insertions(+), 6 deletions(-)


[camel] 01/02: CAMEL-19360: camel-jbang - Export a set of files

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch camel-3.x
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 4ebd67ae36ed798c1da00f5d54e1b2739dd0b1a6
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Wed May 17 08:59:42 2023 +0200

    CAMEL-19360: camel-jbang - Export a set of files
---
 .../camel/dsl/jbang/core/commands/Export.java       |  1 +
 .../dsl/jbang/core/commands/ExportBaseCommand.java  | 21 ++++++++++++++++++++-
 .../dsl/jbang/core/commands/ExportCamelMain.java    |  4 ++--
 .../dsl/jbang/core/commands/ExportQuarkus.java      |  2 +-
 .../dsl/jbang/core/commands/ExportSpringBoot.java   |  2 +-
 .../apache/camel/dsl/jbang/core/commands/Init.java  |  2 +-
 6 files changed, 26 insertions(+), 6 deletions(-)

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 c2f2aac058c..ea0e8253ce6 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
@@ -91,6 +91,7 @@ public class Export extends ExportBaseCommand {
 
     protected Integer export(ExportBaseCommand cmd) throws Exception {
         // copy properties from this to cmd
+        cmd.files = this.files;
         cmd.profile = this.profile;
         cmd.repos = this.repos;
         cmd.dependencies = this.dependencies;
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 4f34e942b67..b5a1dc8f25f 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
@@ -22,7 +22,9 @@ import java.io.IOException;
 import java.io.InputStream;
 import java.nio.charset.StandardCharsets;
 import java.nio.file.Files;
+import java.nio.file.Path;
 import java.nio.file.StandardCopyOption;
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collections;
 import java.util.HashMap;
@@ -33,6 +35,7 @@ import java.util.Map;
 import java.util.Optional;
 import java.util.Properties;
 import java.util.Set;
+import java.util.Stack;
 import java.util.TreeSet;
 import java.util.function.Function;
 import java.util.jar.JarEntry;
@@ -67,6 +70,12 @@ abstract class ExportBaseCommand extends CamelCommand {
     private static final Pattern PACKAGE_PATTERN = Pattern.compile(
             "^\\s*package\\s+([a-zA-Z][.\\w]*)\\s*;.*$", Pattern.MULTILINE);
 
+    @CommandLine.Parameters(description = "The Camel file(s) to export. If no files is specified then what was last run will be exported.",
+                            arity = "0..9", paramLabel = "<files>", parameterConsumer = FilesConsumer.class)
+    Path[] filePaths; // Defined only for file path completion; the field never used
+
+    List<String> files = new ArrayList<>();
+
     @CommandLine.Option(names = { "--profile" }, scope = CommandLine.ScopeType.INHERIT, defaultValue = "application",
                         description = "Profile to use, which refers to loading properties file with the given profile name. By default application.properties is loaded.")
     protected String profile;
@@ -137,7 +146,7 @@ abstract class ExportBaseCommand extends CamelCommand {
     protected String buildTool;
 
     @CommandLine.Option(names = {
-            "-dir",
+            "--dir",
             "--directory" }, description = "Directory where the project will be exported", defaultValue = ".")
     protected String exportDir;
 
@@ -244,6 +253,7 @@ abstract class ExportBaseCommand extends CamelCommand {
         run.profile = profile;
         run.localKameletDir = localKameletDir;
         run.dependencies = dependencies;
+        run.files = files;
         Integer code = run.runSilent();
         return code;
     }
@@ -781,4 +791,13 @@ abstract class ExportBaseCommand extends CamelCommand {
             return null;
         }
     }
+
+    static class FilesConsumer extends ParameterConsumer<Export> {
+        @Override
+        protected void doConsumeParameters(Stack<String> args, Export cmd) {
+            String arg = args.pop();
+            cmd.files.add(arg);
+        }
+    }
+
 }
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 06204ebd8ce..bbd3d9f6fea 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
@@ -58,9 +58,9 @@ class ExportCamelMain extends Export {
 
         // the settings file has information what to export
         File settings = new File(Run.WORK_DIR + "/" + Run.RUN_SETTINGS_FILE);
-        if (fresh || !settings.exists()) {
+        if (fresh || files != null || !settings.exists()) {
             // allow to automatic build
-            if (!quiet) {
+            if (!quiet && fresh) {
                 System.out.println("Generating fresh run data");
             }
             int silent = runSilently();
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 51c9098d50c..3939eabe67e 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
@@ -61,7 +61,7 @@ class ExportQuarkus extends Export {
 
         // the settings file has information what to export
         File settings = new File(Run.WORK_DIR + "/" + Run.RUN_SETTINGS_FILE);
-        if (fresh || !settings.exists()) {
+        if (fresh || files != null || !settings.exists()) {
             // allow to automatic build
             if (!quiet) {
                 System.out.println("Generating fresh run data");
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 6bdfaf2fcb1..8b4e95b9ef5 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
@@ -64,7 +64,7 @@ class ExportSpringBoot extends Export {
 
         // the settings file has information what to export
         File settings = new File(Run.WORK_DIR + "/" + Run.RUN_SETTINGS_FILE);
-        if (fresh || !settings.exists()) {
+        if (fresh || files != null || !settings.exists()) {
             // allow to automatic build
             if (!quiet) {
                 System.out.println("Generating fresh run data");
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Init.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Init.java
index 67c7d0fb0a2..9e829bce0a5 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Init.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Init.java
@@ -63,7 +63,7 @@ public class Init extends CamelCommand {
     private String kameletsVersion;
 
     @Option(names = {
-            "-dir",
+            "--dir",
             "--directory" }, description = "Directory where the project will be saved", defaultValue = ".")
     private String directory;
 


[camel] 02/02: CAMEL-19360: camel-jbang - Export a set of files

Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch camel-3.x
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 8be2f35ba7c8b95087ed7da822368493773d85f8
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Wed May 17 09:04:30 2023 +0200

    CAMEL-19360: camel-jbang - Export a set of files
---
 .../modules/ROOT/pages/camel-jbang.adoc            | 23 ++++++++++++++++++++++
 1 file changed, 23 insertions(+)

diff --git a/docs/user-manual/modules/ROOT/pages/camel-jbang.adoc b/docs/user-manual/modules/ROOT/pages/camel-jbang.adoc
index 103ac73cb5e..45d217e982e 100644
--- a/docs/user-manual/modules/ROOT/pages/camel-jbang.adoc
+++ b/docs/user-manual/modules/ROOT/pages/camel-jbang.adoc
@@ -1793,6 +1793,29 @@ camel export --runtime=camel-main --gav=com.foo:acme:1.0-SNAPSHOT --directory=..
 
 TIP: See the possible options by running: `camel export --help` for more details.
 
+=== Exporting with selected files
+
+By default, Camel will export what was last run, or all files from the current directory.
+You can also explicit specify which files should be exported.
+
+For example, you may have 3 files in a folder:
+
+- Foo.java
+- bar.xml
+- cheese.yaml
+
+These are 3 Camel routes, and you want to export them into 2 different applications:
+
+[source,bash]
+----
+camel export Foo.java --runtime=quarkus --gav=com.foo:acme:1.0-SNAPSHOT --directory=../export1
+camel export bar.xml cheese.yaml --runtime=spring-boot --gav=com.foo:cheese:1.0-SNAPSHOT --directory=../export2
+----
+
+As you can see the first export command will only include `Foo.java`, and then 2nd export includes both `bar.xml` and `cheese.yaml`.
+
+NOTE: If you have `application.properties` in the folder as well, then this will be included in both exports.
+
 === Exporting as Gradle Project
 
 Camel JBang exports by default as a Maven based project. To use Gradle instead, you can