You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by ts...@apache.org on 2022/11/13 23:54:51 UTC

[camel] branch main updated (4c53cf1d363 -> dded47f385f)

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

tsato pushed a change to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git


    from 4c53cf1d363 docs - Update remote Camel K examples URLs
     new 19aa9912f18 CAMEL-18716: Upgrade to Picocli 4.7.0
     new 16fd8cf65b4 CAMEL-18716: camel-jbang - Provide completion for positional file path parameters
     new dded47f385f CAMEL-18716: camel-jbang - Extend file path completion to init/bind commands

The 3 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:
 camel-dependencies/pom.xml                         |  2 +-
 .../apache/camel/dsl/jbang/core/commands/Bind.java | 15 ++++++++++++-
 .../dsl/jbang/core/commands/CamelCommand.java      | 19 ++++++++++++++++
 .../apache/camel/dsl/jbang/core/commands/Init.java | 17 ++++++++++++--
 .../apache/camel/dsl/jbang/core/commands/Pipe.java | 16 ++++++++++++-
 .../apache/camel/dsl/jbang/core/commands/Run.java  | 26 +++++++++++++++++-----
 parent/pom.xml                                     |  2 +-
 7 files changed, 86 insertions(+), 11 deletions(-)


[camel] 02/03: CAMEL-18716: camel-jbang - Provide completion for positional file path parameters

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

tsato pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 16fd8cf65b46e0703dbe99d3ce4efb5eab5b4edb
Author: Tadayoshi Sato <sa...@gmail.com>
AuthorDate: Sun Nov 13 21:49:11 2022 +0900

    CAMEL-18716: camel-jbang - Provide completion for positional file path parameters
---
 .../dsl/jbang/core/commands/CamelCommand.java      | 19 ++++++++++++++++
 .../apache/camel/dsl/jbang/core/commands/Pipe.java | 16 ++++++++++++-
 .../apache/camel/dsl/jbang/core/commands/Run.java  | 26 +++++++++++++++++-----
 3 files changed, 55 insertions(+), 6 deletions(-)

diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/CamelCommand.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/CamelCommand.java
index acc543d0d41..ef5e1b44b67 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/CamelCommand.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/CamelCommand.java
@@ -17,9 +17,14 @@
 package org.apache.camel.dsl.jbang.core.commands;
 
 import java.io.File;
+import java.util.Stack;
 import java.util.concurrent.Callable;
 
 import picocli.CommandLine;
+import picocli.CommandLine.IParameterConsumer;
+import picocli.CommandLine.Model.ArgSpec;
+import picocli.CommandLine.Model.CommandSpec;
+import picocli.CommandLine.ParameterException;
 
 public abstract class CamelCommand implements Callable<Integer> {
 
@@ -63,4 +68,18 @@ public abstract class CamelCommand implements Callable<Integer> {
         return new File(camelDir, pid + "-output.json");
     }
 
+    protected abstract static class ParameterConsumer<T> implements IParameterConsumer {
+
+        @Override
+        public void consumeParameters(Stack<String> args, ArgSpec argSpec, CommandSpec cmdSpec) {
+            if (args.isEmpty()) {
+                throw new ParameterException(cmdSpec.commandLine(), "Error: missing required parameter");
+            }
+            T cmd = (T) cmdSpec.userObject();
+            doConsumeParameters(args, cmd);
+        }
+
+        protected abstract void doConsumeParameters(Stack<String> args, T cmd);
+    }
+
 }
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Pipe.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Pipe.java
index 247e84ff776..abe17f93f17 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Pipe.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Pipe.java
@@ -16,12 +16,18 @@
  */
 package org.apache.camel.dsl.jbang.core.commands;
 
+import java.nio.file.Path;
+import java.util.Stack;
+
 import picocli.CommandLine;
 
 @CommandLine.Command(name = "pipe", description = "Run Camel integration in pipe and filters mode for terminal scripting")
 class Pipe extends CamelCommand {
 
-    @CommandLine.Parameters(description = "Name of file", arity = "1")
+    @CommandLine.Parameters(description = "Name of file", arity = "1",
+                            paramLabel = "<file>", parameterConsumer = FileConsumer.class)
+    Path filePath; // Defined only for file path completion; the field never used
+
     String file;
 
     @CommandLine.Option(names = { "--max-messages" }, defaultValue = "0",
@@ -73,4 +79,12 @@ class Pipe extends CamelCommand {
         return run.runPipe(file);
     }
 
+    static class FileConsumer extends ParameterConsumer<Pipe> {
+        @Override
+        protected void doConsumeParameters(Stack<String> args, Pipe cmd) {
+            String arg = args.pop();
+            cmd.file = arg;
+        }
+    }
+
 }
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java
index 59fec3a3f41..5ba66c71262 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java
@@ -27,6 +27,7 @@ import java.io.IOException;
 import java.nio.charset.StandardCharsets;
 import java.nio.file.FileSystems;
 import java.nio.file.Files;
+import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -35,6 +36,7 @@ import java.util.List;
 import java.util.Locale;
 import java.util.Properties;
 import java.util.Set;
+import java.util.Stack;
 import java.util.StringJoiner;
 import java.util.function.Supplier;
 import java.util.regex.Matcher;
@@ -90,7 +92,9 @@ class Run extends CamelCommand {
 
     //CHECKSTYLE:OFF
     @Parameters(description = "The Camel file(s) to run. If no files specified then application.properties is used as source for which files to run.",
-                arity = "0..9")
+                arity = "0..9", paramLabel = "<files>", parameterConsumer = FilesConsumer.class)
+    Path[] filePaths; // Defined only for file path completion; the field never used
+
     String[] files;
 
     @Option(names = { "--profile" }, scope = CommandLine.ScopeType.INHERIT, defaultValue = "application",
@@ -101,20 +105,20 @@ class Run extends CamelCommand {
             "--dep", "--deps" }, description = "Add additional dependencies (Use commas to separate multiple dependencies)")
     String dependencies;
 
-    @Option(names = {"--repos"}, description = "Additional maven repositories for download on-demand (Use commas to separate multiple repositories)")
+    @Option(names = { "--repos" }, description = "Additional maven repositories for download on-demand (Use commas to separate multiple repositories)")
     String repos;
 
-    @Option(names = {"--maven-settings"}, description = "Optional location of maven setting.xml file to configure servers, repositories, mirrors and proxies." +
+    @Option(names = { "--maven-settings" }, description = "Optional location of maven setting.xml file to configure servers, repositories, mirrors and proxies." +
             " If set to \"false\", not even the default ~/.m2/settings.xml will be used.")
     String mavenSettings;
 
-    @Option(names = {"--maven-settings-security"}, description = "Optional location of maven settings-security.xml file to decrypt settings.xml")
+    @Option(names = { "--maven-settings-security" }, description = "Optional location of maven settings-security.xml file to decrypt settings.xml")
     String mavenSettingsSecurity;
 
     @Option(names = { "--fresh" }, description = "Make sure we use fresh (i.e. non-cached) resources")
     boolean fresh;
 
-    @Option(names = {"--download"}, defaultValue = "true", description = "Whether to allow automatic downloading JAR dependencies (over the internet)")
+    @Option(names = { "--download" }, defaultValue = "true", description = "Whether to allow automatic downloading JAR dependencies (over the internet)")
     boolean download = true;
 
     @Option(names = { "--name" }, defaultValue = "CamelJBang", description = "The name of the Camel application")
@@ -848,4 +852,16 @@ class Run extends CamelCommand {
         }
     }
 
+    static class FilesConsumer extends ParameterConsumer<Run> {
+        @Override
+        protected void doConsumeParameters(Stack<String> args, Run cmd) {
+            List<String> files = new ArrayList<>();
+            while (!args.isEmpty()) {
+                String arg = args.pop();
+                files.add(arg);
+            }
+            cmd.files = files.toArray(String[]::new);
+        }
+    }
+
 }


[camel] 03/03: CAMEL-18716: camel-jbang - Extend file path completion to init/bind commands

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

tsato pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git

commit dded47f385f2f7911b458aababd9955fa11607ff
Author: Tadayoshi Sato <sa...@gmail.com>
AuthorDate: Sun Nov 13 21:56:29 2022 +0900

    CAMEL-18716: camel-jbang - Extend file path completion to init/bind commands
---
 .../org/apache/camel/dsl/jbang/core/commands/Bind.java  | 15 ++++++++++++++-
 .../org/apache/camel/dsl/jbang/core/commands/Init.java  | 17 +++++++++++++++--
 2 files changed, 29 insertions(+), 3 deletions(-)

diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Bind.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Bind.java
index 6a8fd6bf778..4f8d25739f5 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Bind.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Bind.java
@@ -19,8 +19,10 @@ package org.apache.camel.dsl.jbang.core.commands;
 import java.io.FileOutputStream;
 import java.io.InputStream;
 import java.net.URL;
+import java.nio.file.Path;
 import java.util.Iterator;
 import java.util.Set;
+import java.util.Stack;
 
 import org.apache.camel.github.GitHubResourceResolver;
 import org.apache.camel.impl.engine.DefaultResourceResolvers;
@@ -55,7 +57,10 @@ class Bind extends CamelCommand {
                         required = true)
     String sink;
 
-    @CommandLine.Parameters(description = "Name of binding file to be saved", arity = "1")
+    @CommandLine.Parameters(description = "Name of binding file to be saved", arity = "1",
+                            paramLabel = "<file>", parameterConsumer = FileConsumer.class)
+    Path filePath; // Defined only for file path completion; the field never used
+
     String file;
 
     public Bind(CamelJBangMain main) {
@@ -189,4 +194,12 @@ class Bind extends CamelCommand {
         return sb.toString();
     }
 
+    static class FileConsumer extends ParameterConsumer<Bind> {
+        @Override
+        protected void doConsumeParameters(Stack<String> args, Bind cmd) {
+            String arg = args.pop();
+            cmd.file = arg;
+        }
+    }
+
 }
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 ad2d5ca3f65..a757762470f 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
@@ -19,6 +19,8 @@ package org.apache.camel.dsl.jbang.core.commands;
 import java.io.File;
 import java.io.FileOutputStream;
 import java.io.InputStream;
+import java.nio.file.Path;
+import java.util.Stack;
 import java.util.StringJoiner;
 
 import org.apache.camel.CamelContext;
@@ -31,9 +33,9 @@ import org.apache.camel.spi.Resource;
 import org.apache.camel.util.FileUtil;
 import org.apache.camel.util.IOHelper;
 import org.apache.commons.io.IOUtils;
-import picocli.CommandLine;
 import picocli.CommandLine.Command;
 import picocli.CommandLine.Option;
+import picocli.CommandLine.Parameters;
 
 import static org.apache.camel.dsl.jbang.core.common.GistHelper.fetchGistUrls;
 import static org.apache.camel.dsl.jbang.core.common.GitHubHelper.asGithubSingleUrl;
@@ -42,7 +44,10 @@ import static org.apache.camel.dsl.jbang.core.common.GitHubHelper.fetchGithubUrl
 @Command(name = "init", description = "Creates a new Camel integration")
 class Init extends CamelCommand {
 
-    @CommandLine.Parameters(description = "Name of integration file (or a github link)", arity = "1")
+    @Parameters(description = "Name of integration file (or a github link)", arity = "1",
+                paramLabel = "<file>", parameterConsumer = FileConsumer.class)
+    private Path filePath; // Defined only for file path completion; the field never used
+
     private String file;
 
     @Option(names = { "--integration" },
@@ -224,4 +229,12 @@ class Init extends CamelCommand {
         return 0;
     }
 
+    static class FileConsumer extends ParameterConsumer<Init> {
+        @Override
+        protected void doConsumeParameters(Stack<String> args, Init cmd) {
+            String arg = args.pop();
+            cmd.file = arg;
+        }
+    }
+
 }


[camel] 01/03: CAMEL-18716: Upgrade to Picocli 4.7.0

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

tsato pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git

commit 19aa9912f184078beaaceb44e51e0fd873a84683
Author: Tadayoshi Sato <sa...@gmail.com>
AuthorDate: Sat Nov 12 22:44:41 2022 +0900

    CAMEL-18716: Upgrade to Picocli 4.7.0
---
 camel-dependencies/pom.xml | 2 +-
 parent/pom.xml             | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/camel-dependencies/pom.xml b/camel-dependencies/pom.xml
index 6b70c407c2c..7ee50c6ac71 100644
--- a/camel-dependencies/pom.xml
+++ b/camel-dependencies/pom.xml
@@ -451,7 +451,7 @@
     <pdfbox-version>2.0.27</pdfbox-version>
     <pgjdbc-driver-version>42.4.1</pgjdbc-driver-version>
     <pgjdbc-ng-driver-version>0.8.9</pgjdbc-ng-driver-version>
-    <picocli-version>4.6.3</picocli-version>
+    <picocli-version>4.7.0</picocli-version>
     <plc4x-version>0.10.0</plc4x-version>
     <powermock-version>2.0.7</powermock-version>
     <properties-maven-plugin-version>1.0-alpha-2</properties-maven-plugin-version>
diff --git a/parent/pom.xml b/parent/pom.xml
index 24cf72939a4..18224ffdb2f 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -437,7 +437,7 @@
         <pdfbox-version>2.0.27</pdfbox-version>
         <pgjdbc-driver-version>42.4.1</pgjdbc-driver-version>
         <pgjdbc-ng-driver-version>0.8.9</pgjdbc-ng-driver-version>
-        <picocli-version>4.6.3</picocli-version>
+        <picocli-version>4.7.0</picocli-version>
         <plc4x-version>0.10.0</plc4x-version>
         <powermock-version>2.0.7</powermock-version>
         <properties-maven-plugin-version>1.0-alpha-2</properties-maven-plugin-version>