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
The following commit(s) were added to refs/heads/main by this push: new b2b3263a8e6 CAMEL-18721: camel-jbang - Add tab completion for some options b2b3263a8e6 is described below commit b2b3263a8e62daca6dd82a6382096667955a01cc Author: Claus Ibsen <claus.ib...@gmail.com> AuthorDate: Wed Mar 8 15:56:32 2023 +0100 CAMEL-18721: camel-jbang - Add tab completion for some options --- .../dsl/jbang/core/commands/ExportBaseCommand.java | 4 ++- .../apache/camel/dsl/jbang/core/commands/Pipe.java | 4 ++- .../apache/camel/dsl/jbang/core/commands/Run.java | 4 ++- .../jbang/core/commands/action/CamelLogAction.java | 14 +++++++++- .../core/commands/action/CamelThreadDump.java | 15 +++++++++- .../core/commands/action/CamelTraceAction.java | 14 +++++++++- .../jbang/core/commands/action/LoggerAction.java | 6 ++-- .../commands/action/RouteControllerAction.java | 15 +++++++++- .../core/commands/catalog/CatalogBaseCommand.java | 4 ++- .../jbang/core/commands/catalog/CatalogDoc.java | 4 ++- .../core/commands/process/CamelContextStatus.java | 3 +- .../core/commands/process/CamelContextTop.java | 15 +++++++++- .../jbang/core/commands/process/CamelCount.java | 3 +- .../commands/process/CamelProcessorStatus.java | 15 +++++++++- .../core/commands/process/CamelRouteStatus.java | 3 +- .../jbang/core/commands/process/ListBlocked.java | 3 +- .../core/commands/process/ListCircuitBreaker.java | 3 +- .../jbang/core/commands/process/ListEndpoint.java | 15 +++++++++- .../dsl/jbang/core/commands/process/ListEvent.java | 3 +- .../jbang/core/commands/process/ListHealth.java | 3 +- .../jbang/core/commands/process/ListInflight.java | 3 +- .../jbang/core/commands/process/ListMetric.java | 3 +- .../jbang/core/commands/process/ListProcess.java | 3 +- .../jbang/core/commands/process/ListService.java | 3 +- .../dsl/jbang/core/commands/process/ListVault.java | 15 +++++++++- .../common/LoggingLevelCompletionCandidates.java | 31 +++++++++++++++++++++ .../common/PidNameAgeCompletionCandidates.java | 32 ++++++++++++++++++++++ .../core/common/RuntimeCompletionCandidates.java | 32 ++++++++++++++++++++++ 28 files changed, 246 insertions(+), 26 deletions(-) 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 b9a108a4885..98b297a80ae 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 @@ -39,6 +39,7 @@ import java.util.regex.Pattern; import java.util.stream.Collectors; import org.apache.camel.catalog.DefaultCamelCatalog; +import org.apache.camel.dsl.jbang.core.common.RuntimeCompletionCandidates; import org.apache.camel.dsl.jbang.core.common.RuntimeUtil; import org.apache.camel.main.download.MavenGav; import org.apache.camel.util.CamelCaseOrderedProperties; @@ -72,7 +73,8 @@ abstract class ExportBaseCommand extends CamelCommand { "--dep", "--deps" }, description = "Add additional dependencies (Use commas to separate multiple dependencies).") protected String dependencies; - @CommandLine.Option(names = { "--runtime" }, description = "Runtime (spring-boot, quarkus, or camel-main)") + @CommandLine.Option(names = { "--runtime" }, completionCandidates = RuntimeCompletionCandidates.class, + description = "Runtime (spring-boot, quarkus, or camel-main)") protected String runtime; @CommandLine.Option(names = { "--gav" }, description = "The Maven group:artifact:version") 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 abe17f93f17..d62a46841bd 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 @@ -19,6 +19,7 @@ package org.apache.camel.dsl.jbang.core.commands; import java.nio.file.Path; import java.util.Stack; +import org.apache.camel.dsl.jbang.core.common.LoggingLevelCompletionCandidates; import picocli.CommandLine; @CommandLine.Command(name = "pipe", description = "Run Camel integration in pipe and filters mode for terminal scripting") @@ -45,7 +46,8 @@ class Pipe extends CamelCommand { description = "Can be used to turn on logging (logs to file in <user home>/.camel directory)") boolean logging; - @CommandLine.Option(names = { "--logging-level" }, defaultValue = "info", description = "Logging level") + @CommandLine.Option(names = { "--logging-level" }, completionCandidates = LoggingLevelCompletionCandidates.class, + defaultValue = "info", description = "Logging level") String loggingLevel; @CommandLine.Option(names = { "--properties" }, 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 5a9db9dd7f0..e76ed202182 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 @@ -50,6 +50,7 @@ import io.apicurio.datamodels.Library; import io.apicurio.datamodels.openapi.models.OasDocument; import org.apache.camel.CamelContext; import org.apache.camel.catalog.DefaultCamelCatalog; +import org.apache.camel.dsl.jbang.core.common.LoggingLevelCompletionCandidates; import org.apache.camel.dsl.jbang.core.common.RuntimeUtil; import org.apache.camel.dsl.jbang.core.common.VersionHelper; import org.apache.camel.generator.openapi.RestDslGenerator; @@ -140,7 +141,8 @@ class Run extends CamelCommand { @Option(names = { "--logging" }, defaultValue = "true", description = "Can be used to turn off logging") boolean logging = true; - @Option(names = { "--logging-level" }, defaultValue = "info", description = "Logging level") + @Option(names = { "--logging-level" }, completionCandidates = LoggingLevelCompletionCandidates.class, + defaultValue = "info", description = "Logging level") String loggingLevel; @Option(names = { "--logging-color" }, defaultValue = "true", description = "Use colored logging") diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelLogAction.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelLogAction.java index 1da4b7eb886..ca7862b10e8 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelLogAction.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelLogAction.java @@ -27,6 +27,7 @@ import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.HashSet; +import java.util.Iterator; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -52,6 +53,17 @@ public class CamelLogAction extends ActionBaseCommand { private static final int NAME_MAX_WIDTH = 25; private static final int NAME_MIN_WIDTH = 10; + public static class PrefixCompletionCandidates implements Iterable<String> { + + public PrefixCompletionCandidates() { + } + + @Override + public Iterator<String> iterator() { + return List.of("auto", "true", "false").iterator(); + } + } + @CommandLine.Parameters(description = "Name or pid of running Camel integration. (default selects all)", arity = "0..1") String name = "*"; @@ -66,7 +78,7 @@ public class CamelLogAction extends ActionBaseCommand { description = "Keep following and outputting new log lines (use ctrl + c to exit).") boolean follow = true; - @CommandLine.Option(names = { "--prefix" }, defaultValue = "auto", + @CommandLine.Option(names = { "--prefix" }, defaultValue = "auto", completionCandidates = PrefixCompletionCandidates.class, description = "Print prefix with running Camel integration name. auto=only prefix when running multiple integrations. true=always prefix. false=prefix off.") String prefix = "auto"; diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelThreadDump.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelThreadDump.java index 1ee5b4c147f..41b267bbddf 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelThreadDump.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelThreadDump.java @@ -20,6 +20,7 @@ import java.io.File; import java.io.FileInputStream; import java.util.ArrayList; import java.util.Arrays; +import java.util.Iterator; import java.util.List; import com.github.freva.asciitable.AsciiTable; @@ -40,10 +41,22 @@ import picocli.CommandLine.Command; @Command(name = "thread-dump", description = "List threads in a running Camel integration") public class CamelThreadDump extends ActionWatchCommand { + public static class IdNameStateCompletionCandidates implements Iterable<String> { + + public IdNameStateCompletionCandidates() { + } + + @Override + public Iterator<String> iterator() { + return List.of("id", "name", "state").iterator(); + } + + } + @CommandLine.Parameters(description = "Name or pid of running Camel integration", arity = "1") String name; - @CommandLine.Option(names = { "--sort" }, + @CommandLine.Option(names = { "--sort" }, completionCandidates = IdNameStateCompletionCandidates.class, description = "Sort by id, name or state", defaultValue = "id") String sort; diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelTraceAction.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelTraceAction.java index a178822f3ad..dc754484c3d 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelTraceAction.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelTraceAction.java @@ -27,6 +27,7 @@ import java.util.Arrays; import java.util.Date; import java.util.HashMap; import java.util.HashSet; +import java.util.Iterator; import java.util.LinkedHashMap; import java.util.List; import java.util.Map; @@ -61,6 +62,17 @@ public class CamelTraceAction extends ActionBaseCommand { private static final int NAME_MAX_WIDTH = 25; private static final int NAME_MIN_WIDTH = 10; + public static class PrefixCompletionCandidates implements Iterable<String> { + + public PrefixCompletionCandidates() { + } + + @Override + public Iterator<String> iterator() { + return List.of("auto", "true", "false").iterator(); + } + } + @CommandLine.Parameters(description = "Name or pid of running Camel integration. (default selects all)", arity = "0..1") String name = "*"; @@ -76,7 +88,7 @@ public class CamelTraceAction extends ActionBaseCommand { description = "Keep following and outputting new traces (use ctrl + c to exit).") boolean follow = true; - @CommandLine.Option(names = { "--prefix" }, defaultValue = "auto", + @CommandLine.Option(names = { "--prefix" }, defaultValue = "auto", completionCandidates = PrefixCompletionCandidates.class, description = "Print prefix with running Camel integration name. auto=only prefix when running multiple integrations. true=always prefix. false=prefix off.") String prefix = "auto"; diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/LoggerAction.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/LoggerAction.java index e79dd0b9e72..0a367e0e115 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/LoggerAction.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/LoggerAction.java @@ -27,6 +27,8 @@ import com.github.freva.asciitable.Column; import com.github.freva.asciitable.HorizontalAlign; import com.github.freva.asciitable.OverflowBehaviour; import org.apache.camel.dsl.jbang.core.commands.CamelJBangMain; +import org.apache.camel.dsl.jbang.core.common.LoggingLevelCompletionCandidates; +import org.apache.camel.dsl.jbang.core.common.PidNameAgeCompletionCandidates; import org.apache.camel.dsl.jbang.core.common.ProcessHelper; import org.apache.camel.util.IOHelper; import org.apache.camel.util.TimeUtils; @@ -37,7 +39,7 @@ import picocli.CommandLine; description = "List or change logging levels") public class LoggerAction extends ActionBaseCommand { - @CommandLine.Option(names = { "--sort" }, + @CommandLine.Option(names = { "--sort" }, completionCandidates = PidNameAgeCompletionCandidates.class, description = "Sort by pid, name or age", defaultValue = "pid") String sort; @@ -48,7 +50,7 @@ public class LoggerAction extends ActionBaseCommand { description = "To select all running Camel integrations") boolean all; - @CommandLine.Option(names = { "--level", "--logging-level" }, + @CommandLine.Option(names = { "--logging-level" }, completionCandidates = LoggingLevelCompletionCandidates.class, description = "To change logging level") String loggingLevel; diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/RouteControllerAction.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/RouteControllerAction.java index f5e0a85acfd..8657b6b7540 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/RouteControllerAction.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/RouteControllerAction.java @@ -20,6 +20,7 @@ import java.io.File; import java.io.FileInputStream; import java.util.ArrayList; import java.util.Arrays; +import java.util.Iterator; import java.util.List; import java.util.stream.Collectors; @@ -41,10 +42,22 @@ import picocli.CommandLine.Command; @Command(name = "route-controller", description = "List status of route controller in a running Camel integration") public class RouteControllerAction extends ActionWatchCommand { + public static class IdStateCompletionCandidates implements Iterable<String> { + + public IdStateCompletionCandidates() { + } + + @Override + public Iterator<String> iterator() { + return List.of("id", "state").iterator(); + } + + } + @CommandLine.Parameters(description = "Name or pid of running Camel integration", arity = "1") String name; - @CommandLine.Option(names = { "--sort" }, + @CommandLine.Option(names = { "--sort" }, completionCandidates = IdStateCompletionCandidates.class, description = "Sort by id, or state", defaultValue = "id") String sort; diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/catalog/CatalogBaseCommand.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/catalog/CatalogBaseCommand.java index 6db6fec48da..f44fadc0239 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/catalog/CatalogBaseCommand.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/catalog/CatalogBaseCommand.java @@ -30,6 +30,7 @@ import org.apache.camel.catalog.DefaultCamelCatalog; import org.apache.camel.dsl.jbang.core.commands.CamelCommand; import org.apache.camel.dsl.jbang.core.commands.CamelJBangMain; import org.apache.camel.dsl.jbang.core.common.CatalogLoader; +import org.apache.camel.dsl.jbang.core.common.RuntimeCompletionCandidates; import org.apache.camel.dsl.jbang.core.common.VersionHelper; import org.apache.camel.main.download.MavenGav; import org.apache.camel.tooling.model.ArtifactModel; @@ -42,7 +43,8 @@ public abstract class CatalogBaseCommand extends CamelCommand { description = "To run using a different Camel version than the default version.") String camelVersion; - @CommandLine.Option(names = { "--runtime" }, description = "Runtime (spring-boot, quarkus, or camel-main)") + @CommandLine.Option(names = { "--runtime" }, completionCandidates = RuntimeCompletionCandidates.class, + description = "Runtime (spring-boot, quarkus, or camel-main)") String runtime; @CommandLine.Option(names = { "--quarkus-version" }, description = "Quarkus Platform version", diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/catalog/CatalogDoc.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/catalog/CatalogDoc.java index 0ded2336476..ee297092e9c 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/catalog/CatalogDoc.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/catalog/CatalogDoc.java @@ -33,6 +33,7 @@ import org.apache.camel.catalog.DefaultCamelCatalog; import org.apache.camel.dsl.jbang.core.commands.CamelCommand; import org.apache.camel.dsl.jbang.core.commands.CamelJBangMain; import org.apache.camel.dsl.jbang.core.common.CatalogLoader; +import org.apache.camel.dsl.jbang.core.common.RuntimeCompletionCandidates; import org.apache.camel.main.download.MavenGav; import org.apache.camel.main.util.SuggestSimilarHelper; import org.apache.camel.tooling.model.BaseOptionModel; @@ -58,7 +59,8 @@ public class CatalogDoc extends CamelCommand { description = "To run using a different Camel version than the default version.") String camelVersion; - @CommandLine.Option(names = { "--runtime" }, description = "Runtime (spring-boot, quarkus, or camel-main)") + @CommandLine.Option(names = { "--runtime" }, completionCandidates = RuntimeCompletionCandidates.class, + description = "Runtime (spring-boot, quarkus, or camel-main)") String runtime; @CommandLine.Option(names = { "--repos" }, diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelContextStatus.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelContextStatus.java index eb87dc1f2fb..dad144299f6 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelContextStatus.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelContextStatus.java @@ -26,6 +26,7 @@ import com.github.freva.asciitable.Column; import com.github.freva.asciitable.HorizontalAlign; import com.github.freva.asciitable.OverflowBehaviour; import org.apache.camel.dsl.jbang.core.commands.CamelJBangMain; +import org.apache.camel.dsl.jbang.core.common.PidNameAgeCompletionCandidates; import org.apache.camel.dsl.jbang.core.common.ProcessHelper; import org.apache.camel.util.TimeUtils; import org.apache.camel.util.json.JsonArray; @@ -40,7 +41,7 @@ public class CamelContextStatus extends ProcessWatchCommand { @CommandLine.Parameters(description = "Name or pid of running Camel integration", arity = "0..1") String name = "*"; - @CommandLine.Option(names = { "--sort" }, + @CommandLine.Option(names = { "--sort" }, completionCandidates = PidNameAgeCompletionCandidates.class, description = "Sort by pid, name or age", defaultValue = "pid") String sort; diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelContextTop.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelContextTop.java index ed36eb58b8e..5d752f93284 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelContextTop.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelContextTop.java @@ -18,6 +18,7 @@ package org.apache.camel.dsl.jbang.core.commands.process; import java.util.ArrayList; import java.util.Arrays; +import java.util.Iterator; import java.util.List; import java.util.Map; @@ -36,10 +37,22 @@ import picocli.CommandLine.Command; description = "Top status of Camel integrations") public class CamelContextTop extends ProcessWatchCommand { + public static class PidNameMemAgeCompletionCandidates implements Iterable<String> { + + public PidNameMemAgeCompletionCandidates() { + } + + @Override + public Iterator<String> iterator() { + return List.of("pid", "name", "mem", "age").iterator(); + } + + } + @CommandLine.Parameters(description = "Name or pid of running Camel integration", arity = "0..1") String name = "*"; - @CommandLine.Option(names = { "--sort" }, + @CommandLine.Option(names = { "--sort" }, completionCandidates = PidNameMemAgeCompletionCandidates.class, description = "Sort by pid, name, mem, or age", defaultValue = "mem") String sort; diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelCount.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelCount.java index f43d3f6819c..3275435fec1 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelCount.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelCount.java @@ -26,6 +26,7 @@ import com.github.freva.asciitable.Column; import com.github.freva.asciitable.HorizontalAlign; import com.github.freva.asciitable.OverflowBehaviour; import org.apache.camel.dsl.jbang.core.commands.CamelJBangMain; +import org.apache.camel.dsl.jbang.core.common.PidNameAgeCompletionCandidates; import org.apache.camel.dsl.jbang.core.common.ProcessHelper; import org.apache.camel.util.TimeUtils; import org.apache.camel.util.json.JsonObject; @@ -39,7 +40,7 @@ public class CamelCount extends ProcessWatchCommand { @CommandLine.Parameters(description = "Name or pid of running Camel integration", arity = "0..1") String name = "*"; - @CommandLine.Option(names = { "--sort" }, + @CommandLine.Option(names = { "--sort" }, completionCandidates = PidNameAgeCompletionCandidates.class, description = "Sort by pid, name or age", defaultValue = "pid") String sort; diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelProcessorStatus.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelProcessorStatus.java index f752d71da1d..310f3855a51 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelProcessorStatus.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelProcessorStatus.java @@ -18,6 +18,7 @@ package org.apache.camel.dsl.jbang.core.commands.process; import java.util.ArrayList; import java.util.Arrays; +import java.util.Iterator; import java.util.List; import java.util.Map; @@ -37,10 +38,22 @@ import picocli.CommandLine.Command; @Command(name = "processor", description = "Get status of Camel processors") public class CamelProcessorStatus extends ProcessWatchCommand { + public static class PidNameCompletionCandidates implements Iterable<String> { + + public PidNameCompletionCandidates() { + } + + @Override + public Iterator<String> iterator() { + return List.of("pid", "name").iterator(); + } + + } + @CommandLine.Parameters(description = "Name or pid of running Camel integration", arity = "0..1") String name = "*"; - @CommandLine.Option(names = { "--sort" }, + @CommandLine.Option(names = { "--sort" }, completionCandidates = PidNameCompletionCandidates.class, description = "Sort by pid or name", defaultValue = "pid") String sort; diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelRouteStatus.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelRouteStatus.java index 2e65d9ec7a3..44b0fcdc827 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelRouteStatus.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelRouteStatus.java @@ -26,6 +26,7 @@ import com.github.freva.asciitable.Column; import com.github.freva.asciitable.HorizontalAlign; import com.github.freva.asciitable.OverflowBehaviour; import org.apache.camel.dsl.jbang.core.commands.CamelJBangMain; +import org.apache.camel.dsl.jbang.core.common.PidNameAgeCompletionCandidates; import org.apache.camel.dsl.jbang.core.common.ProcessHelper; import org.apache.camel.util.TimeUtils; import org.apache.camel.util.json.JsonArray; @@ -39,7 +40,7 @@ public class CamelRouteStatus extends ProcessWatchCommand { @CommandLine.Parameters(description = "Name or pid of running Camel integration", arity = "0..1") String name = "*"; - @CommandLine.Option(names = { "--sort" }, + @CommandLine.Option(names = { "--sort" }, completionCandidates = PidNameAgeCompletionCandidates.class, description = "Sort by pid, name or age", defaultValue = "pid") String sort; diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListBlocked.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListBlocked.java index 800eba36ca3..090ca45fe70 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListBlocked.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListBlocked.java @@ -25,6 +25,7 @@ import com.github.freva.asciitable.Column; import com.github.freva.asciitable.HorizontalAlign; import com.github.freva.asciitable.OverflowBehaviour; import org.apache.camel.dsl.jbang.core.commands.CamelJBangMain; +import org.apache.camel.dsl.jbang.core.common.PidNameAgeCompletionCandidates; import org.apache.camel.dsl.jbang.core.common.ProcessHelper; import org.apache.camel.util.TimeUtils; import org.apache.camel.util.json.JsonArray; @@ -39,7 +40,7 @@ public class ListBlocked extends ProcessWatchCommand { @CommandLine.Parameters(description = "Name or pid of running Camel integration", arity = "0..1") String name = "*"; - @CommandLine.Option(names = { "--sort" }, + @CommandLine.Option(names = { "--sort" }, completionCandidates = PidNameAgeCompletionCandidates.class, description = "Sort by pid, name or age", defaultValue = "pid") String sort; diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListCircuitBreaker.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListCircuitBreaker.java index 9d79ed9568e..b9f06cf49db 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListCircuitBreaker.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListCircuitBreaker.java @@ -25,6 +25,7 @@ import com.github.freva.asciitable.Column; import com.github.freva.asciitable.HorizontalAlign; import com.github.freva.asciitable.OverflowBehaviour; import org.apache.camel.dsl.jbang.core.commands.CamelJBangMain; +import org.apache.camel.dsl.jbang.core.common.PidNameAgeCompletionCandidates; import org.apache.camel.dsl.jbang.core.common.ProcessHelper; import org.apache.camel.util.TimeUtils; import org.apache.camel.util.json.JsonArray; @@ -39,7 +40,7 @@ public class ListCircuitBreaker extends ProcessWatchCommand { @CommandLine.Parameters(description = "Name or pid of running Camel integration", arity = "0..1") String name = "*"; - @CommandLine.Option(names = { "--sort" }, + @CommandLine.Option(names = { "--sort" }, completionCandidates = PidNameAgeCompletionCandidates.class, description = "Sort by pid, name or age", defaultValue = "pid") String sort; diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListEndpoint.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListEndpoint.java index e3205346c86..59d4af497bc 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListEndpoint.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListEndpoint.java @@ -18,6 +18,7 @@ package org.apache.camel.dsl.jbang.core.commands.process; import java.util.ArrayList; import java.util.Arrays; +import java.util.Iterator; import java.util.List; import com.github.freva.asciitable.AsciiTable; @@ -36,10 +37,22 @@ import picocli.CommandLine.Command; @Command(name = "endpoint", description = "Get usage of Camel endpoints") public class ListEndpoint extends ProcessWatchCommand { + public static class PidNameAgeTotalCompletionCandidates implements Iterable<String> { + + public PidNameAgeTotalCompletionCandidates() { + } + + @Override + public Iterator<String> iterator() { + return List.of("pid", "name", "age", "total").iterator(); + } + + } + @CommandLine.Parameters(description = "Name or pid of running Camel integration", arity = "0..1") String name = "*"; - @CommandLine.Option(names = { "--sort" }, + @CommandLine.Option(names = { "--sort" }, completionCandidates = PidNameAgeTotalCompletionCandidates.class, description = "Sort by pid, name, age or total", defaultValue = "pid") String sort; diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListEvent.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListEvent.java index fca78be3c4a..916b2953911 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListEvent.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListEvent.java @@ -25,6 +25,7 @@ import com.github.freva.asciitable.Column; import com.github.freva.asciitable.HorizontalAlign; import com.github.freva.asciitable.OverflowBehaviour; import org.apache.camel.dsl.jbang.core.commands.CamelJBangMain; +import org.apache.camel.dsl.jbang.core.common.PidNameAgeCompletionCandidates; import org.apache.camel.dsl.jbang.core.common.ProcessHelper; import org.apache.camel.util.TimeUtils; import org.apache.camel.util.json.JsonArray; @@ -39,7 +40,7 @@ public class ListEvent extends ProcessWatchCommand { @CommandLine.Parameters(description = "Name or pid of running Camel integration", arity = "0..1") String name = "*"; - @CommandLine.Option(names = { "--sort" }, + @CommandLine.Option(names = { "--sort" }, completionCandidates = PidNameAgeCompletionCandidates.class, description = "Sort by pid, name or age", defaultValue = "pid") String sort; diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListHealth.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListHealth.java index 8d69917ba7b..3f9c00e72c1 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListHealth.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListHealth.java @@ -30,6 +30,7 @@ import com.github.freva.asciitable.Column; import com.github.freva.asciitable.HorizontalAlign; import com.github.freva.asciitable.OverflowBehaviour; import org.apache.camel.dsl.jbang.core.commands.CamelJBangMain; +import org.apache.camel.dsl.jbang.core.common.PidNameAgeCompletionCandidates; import org.apache.camel.dsl.jbang.core.common.ProcessHelper; import org.apache.camel.health.HealthCheckHelper; import org.apache.camel.util.StringHelper; @@ -42,7 +43,7 @@ import picocli.CommandLine.Command; @Command(name = "health", description = "Get health check status of running Camel integrations") public class ListHealth extends ProcessWatchCommand { - @CommandLine.Option(names = { "--sort" }, + @CommandLine.Option(names = { "--sort" }, completionCandidates = PidNameAgeCompletionCandidates.class, description = "Sort by pid, name or age", defaultValue = "pid") String sort; diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListInflight.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListInflight.java index 941431dce9e..87c1b679e70 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListInflight.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListInflight.java @@ -25,6 +25,7 @@ import com.github.freva.asciitable.Column; import com.github.freva.asciitable.HorizontalAlign; import com.github.freva.asciitable.OverflowBehaviour; import org.apache.camel.dsl.jbang.core.commands.CamelJBangMain; +import org.apache.camel.dsl.jbang.core.common.PidNameAgeCompletionCandidates; import org.apache.camel.dsl.jbang.core.common.ProcessHelper; import org.apache.camel.util.TimeUtils; import org.apache.camel.util.json.JsonArray; @@ -39,7 +40,7 @@ public class ListInflight extends ProcessWatchCommand { @CommandLine.Parameters(description = "Name or pid of running Camel integration", arity = "0..1") String name = "*"; - @CommandLine.Option(names = { "--sort" }, + @CommandLine.Option(names = { "--sort" }, completionCandidates = PidNameAgeCompletionCandidates.class, description = "Sort by pid, name or age", defaultValue = "pid") String sort; diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListMetric.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListMetric.java index b69b646b1d9..d0ea16a878c 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListMetric.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListMetric.java @@ -25,6 +25,7 @@ import com.github.freva.asciitable.Column; import com.github.freva.asciitable.HorizontalAlign; import com.github.freva.asciitable.OverflowBehaviour; import org.apache.camel.dsl.jbang.core.commands.CamelJBangMain; +import org.apache.camel.dsl.jbang.core.common.PidNameAgeCompletionCandidates; import org.apache.camel.dsl.jbang.core.common.ProcessHelper; import org.apache.camel.util.TimeUtils; import org.apache.camel.util.json.JsonArray; @@ -39,7 +40,7 @@ public class ListMetric extends ProcessWatchCommand { @CommandLine.Parameters(description = "Name or pid of running Camel integration", arity = "0..1") String name = "*"; - @CommandLine.Option(names = { "--sort" }, + @CommandLine.Option(names = { "--sort" }, completionCandidates = PidNameAgeCompletionCandidates.class, description = "Sort by pid, name or age", defaultValue = "pid") String sort; diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListProcess.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListProcess.java index 8d67cfff03b..38a1018ee56 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListProcess.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListProcess.java @@ -25,6 +25,7 @@ import com.github.freva.asciitable.Column; import com.github.freva.asciitable.HorizontalAlign; import com.github.freva.asciitable.OverflowBehaviour; import org.apache.camel.dsl.jbang.core.commands.CamelJBangMain; +import org.apache.camel.dsl.jbang.core.common.PidNameAgeCompletionCandidates; import org.apache.camel.dsl.jbang.core.common.ProcessHelper; import org.apache.camel.util.TimeUtils; import org.apache.camel.util.json.JsonObject; @@ -34,7 +35,7 @@ import picocli.CommandLine.Command; @Command(name = "ps", description = "List running Camel integrations") public class ListProcess extends ProcessWatchCommand { - @CommandLine.Option(names = { "--sort" }, + @CommandLine.Option(names = { "--sort" }, completionCandidates = PidNameAgeCompletionCandidates.class, description = "Sort by pid, name or age", defaultValue = "pid") String sort; diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListService.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListService.java index 9b56a84ef15..f35b60c0868 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListService.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListService.java @@ -25,6 +25,7 @@ import com.github.freva.asciitable.Column; import com.github.freva.asciitable.HorizontalAlign; import com.github.freva.asciitable.OverflowBehaviour; import org.apache.camel.dsl.jbang.core.commands.CamelJBangMain; +import org.apache.camel.dsl.jbang.core.common.PidNameAgeCompletionCandidates; import org.apache.camel.dsl.jbang.core.common.ProcessHelper; import org.apache.camel.util.TimeUtils; import org.apache.camel.util.json.JsonArray; @@ -39,7 +40,7 @@ public class ListService extends ProcessWatchCommand { @CommandLine.Parameters(description = "Name or pid of running Camel integration", arity = "0..1") String name = "*"; - @CommandLine.Option(names = { "--sort" }, + @CommandLine.Option(names = { "--sort" }, completionCandidates = PidNameAgeCompletionCandidates.class, description = "Sort by pid, name or age", defaultValue = "pid") String sort; diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListVault.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListVault.java index 8ce83a353cb..ac2d8108a15 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListVault.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListVault.java @@ -18,6 +18,7 @@ package org.apache.camel.dsl.jbang.core.commands.process; import java.util.ArrayList; import java.util.Arrays; +import java.util.Iterator; import java.util.List; import com.github.freva.asciitable.AsciiTable; @@ -36,7 +37,19 @@ import picocli.CommandLine.Command; description = "List secrets from security vaults used by running Camel integrations") public class ListVault extends ProcessWatchCommand { - @CommandLine.Option(names = { "--sort" }, + public static class PidNameCompletionCandidates implements Iterable<String> { + + public PidNameCompletionCandidates() { + } + + @Override + public Iterator<String> iterator() { + return List.of("pid", "name").iterator(); + } + + } + + @CommandLine.Option(names = { "--sort" }, completionCandidates = PidNameCompletionCandidates.class, description = "Sort by pid, name", defaultValue = "pid") String sort; diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/LoggingLevelCompletionCandidates.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/LoggingLevelCompletionCandidates.java new file mode 100644 index 00000000000..eab3949df52 --- /dev/null +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/LoggingLevelCompletionCandidates.java @@ -0,0 +1,31 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.camel.dsl.jbang.core.common; + +import java.util.Iterator; +import java.util.List; + +public class LoggingLevelCompletionCandidates implements Iterable<String> { + + public LoggingLevelCompletionCandidates() { + } + + @Override + public Iterator<String> iterator() { + return List.of("ERROR", "WARN", "INFO", "DEBUG", "TRACE").iterator(); + } +} diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/PidNameAgeCompletionCandidates.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/PidNameAgeCompletionCandidates.java new file mode 100644 index 00000000000..10f2b7669ef --- /dev/null +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/PidNameAgeCompletionCandidates.java @@ -0,0 +1,32 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.camel.dsl.jbang.core.common; + +import java.util.Iterator; +import java.util.List; + +public class PidNameAgeCompletionCandidates implements Iterable<String> { + + public PidNameAgeCompletionCandidates() { + } + + @Override + public Iterator<String> iterator() { + return List.of("pid", "name", "age").iterator(); + } + +} diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/RuntimeCompletionCandidates.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/RuntimeCompletionCandidates.java new file mode 100644 index 00000000000..80f688a9af4 --- /dev/null +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/RuntimeCompletionCandidates.java @@ -0,0 +1,32 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed with + * this work for additional information regarding copyright ownership. + * The ASF licenses this file to You under the Apache License, Version 2.0 + * (the "License"); you may not use this file except in compliance with + * the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ +package org.apache.camel.dsl.jbang.core.common; + +import java.util.Iterator; +import java.util.List; + +public class RuntimeCompletionCandidates implements Iterable<String> { + + public RuntimeCompletionCandidates() { + } + + @Override + public Iterator<String> iterator() { + return List.of("camel-main", "spring-boot", "quarkus").iterator(); + } + +}