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 <sato.tadayo...@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; + } + } + }