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

Reply via email to