From 85b522f35058e37c35d5c5c2d150f5fe3ca0e803 Mon Sep 17 00:00:00 2001 From: Guillaume Nodet Date: Mon, 23 Mar 2026 14:06:57 +0100 Subject: [PATCH 1/4] CAMEL-21966: Add example usage snippets to camel-jbang CLI help text Co-Authored-By: Claude Opus 4.6 --- .../apache/camel/dsl/jbang/core/commands/Complete.java | 5 ++++- .../apache/camel/dsl/jbang/core/commands/Debug.java | 7 ++++++- .../camel/dsl/jbang/core/commands/DependencyList.java | 6 +++++- .../apache/camel/dsl/jbang/core/commands/Explain.java | 7 ++++++- .../apache/camel/dsl/jbang/core/commands/Export.java | 9 ++++++++- .../apache/camel/dsl/jbang/core/commands/Harden.java | 7 ++++++- .../org/apache/camel/dsl/jbang/core/commands/Init.java | 8 +++++++- .../org/apache/camel/dsl/jbang/core/commands/Run.java | 10 +++++++++- .../camel/dsl/jbang/core/commands/SBOMGenerator.java | 7 ++++++- .../apache/camel/dsl/jbang/core/commands/Script.java | 6 +++++- .../apache/camel/dsl/jbang/core/commands/Shell.java | 6 +++++- .../camel/dsl/jbang/core/commands/TransformRoute.java | 6 +++++- .../camel/dsl/jbang/core/commands/WrapperCommand.java | 6 +++++- .../dsl/jbang/core/commands/action/CamelLogAction.java | 7 ++++++- .../jbang/core/commands/action/CamelSendAction.java | 6 +++++- .../jbang/core/commands/action/CamelTraceAction.java | 6 +++++- .../jbang/core/commands/catalog/CatalogComponent.java | 6 +++++- .../dsl/jbang/core/commands/catalog/CatalogDoc.java | 8 +++++++- .../jbang/core/commands/catalog/CatalogKamelet.java | 7 ++++++- .../dsl/jbang/core/commands/config/ConfigGet.java | 6 +++++- .../dsl/jbang/core/commands/config/ConfigSet.java | 6 +++++- .../jbang/core/commands/process/CamelRouteStatus.java | 7 ++++++- .../dsl/jbang/core/commands/process/CamelStatus.java | 8 +++++++- .../dsl/jbang/core/commands/process/CamelTop.java | 7 ++++++- .../dsl/jbang/core/commands/process/ListHealth.java | 6 +++++- .../dsl/jbang/core/commands/process/ListProcess.java | 7 ++++++- .../dsl/jbang/core/commands/process/StopProcess.java | 8 +++++++- .../dsl/jbang/core/commands/version/VersionList.java | 7 ++++++- .../dsl/jbang/core/commands/version/VersionSet.java | 7 ++++++- 29 files changed, 170 insertions(+), 29 deletions(-) diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Complete.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Complete.java index d8ca99c9ab9a4..f90623e0279cd 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Complete.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Complete.java @@ -21,7 +21,10 @@ import picocli.AutoComplete; import picocli.CommandLine; -@CommandLine.Command(name = "complete", description = "Generate completion script for bash/zsh") +@CommandLine.Command(name = "complete", description = "Generate completion script for bash/zsh", + footer = { + "%nExamples:", + " source <(camel complete)" }) public class Complete extends CamelCommand { public Complete(CamelJBangMain main) { diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Debug.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Debug.java index 6882f0f540bdd..e5910cb1bdba3 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Debug.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Debug.java @@ -74,7 +74,12 @@ import static org.apache.camel.dsl.jbang.core.common.CommandLineHelper.CAMEL_JBANG_WORK_DIR; import static org.apache.camel.util.IOHelper.buffered; -@Command(name = "debug", description = "Debug local Camel integration", sortOptions = false, showDefaultValues = true) +@Command(name = "debug", description = "Debug local Camel integration", sortOptions = false, showDefaultValues = true, + footer = { + "%nExamples:", + " camel debug hello.java", + " camel debug hello.yaml --breakpoint=myBreakpoint", + " camel debug hello.java --suspend" }) public class Debug extends Run { @CommandLine.Option(names = { "--remote-attach" }, diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/DependencyList.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/DependencyList.java index 9fa59ae6d238d..aa454cccbabb2 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/DependencyList.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/DependencyList.java @@ -46,7 +46,11 @@ @CommandLine.Command(name = "list", description = "Displays all Camel dependencies required to run", sortOptions = false, - showDefaultValues = true) + showDefaultValues = true, + footer = { + "%nExamples:", + " camel dependency list hello.java", + " camel dependency list hello.java --output=gav" }) public class DependencyList extends Export { protected static final String EXPORT_DIR = CommandLineHelper.CAMEL_JBANG_WORK_DIR + "/export"; diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Explain.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Explain.java index 8abac544185f3..5854f14979d9c 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Explain.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Explain.java @@ -52,7 +52,12 @@ */ @Command(name = "explain", description = "Explain what a Camel route does using AI/LLM", - sortOptions = false, showDefaultValues = true) + sortOptions = false, showDefaultValues = true, + footer = { + "%nExamples:", + " camel explain hello.java", + " camel explain hello.yaml --format=markdown", + " camel explain hello.java --model=gpt-4" }) public class Explain extends CamelCommand { public static class FormatCompletionCandidates implements Iterable { 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 463dcdd9efe3d..c2bad930a052b 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 @@ -59,7 +59,14 @@ @Command(name = "export", description = "Export to other runtimes (Camel Main, Spring Boot, or Quarkus)", sortOptions = false, - showDefaultValues = true) + showDefaultValues = true, + footer = { + "%nExamples:", + " camel export hello.java", + " camel export --runtime=spring-boot hello.java", + " camel export --runtime=quarkus *", + " camel export --gav=com.example:myapp:1.0 hello.java", + " camel export --dry-run hello.java" }) public class Export extends ExportBaseCommand { public Export(CamelJBangMain main) { diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Harden.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Harden.java index 77a5b46144a54..2fcc6fb4b470a 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Harden.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Harden.java @@ -53,7 +53,12 @@ */ @Command(name = "harden", description = "Suggest security hardening for Camel routes using AI/LLM", - sortOptions = false, showDefaultValues = true) + sortOptions = false, showDefaultValues = true, + footer = { + "%nExamples:", + " camel harden hello.java", + " camel harden hello.yaml --format=markdown", + " camel harden hello.java --model=gpt-4" }) public class Harden extends CamelCommand { public static class FormatCompletionCandidates implements Iterable { 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 1a0f967b8bff0..6d965cd2dd894 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 @@ -48,7 +48,13 @@ import static org.apache.camel.dsl.jbang.core.common.GitHubHelper.fetchGithubUrls; @Command(name = "init", description = "Creates a new Camel integration", - sortOptions = false, showDefaultValues = true) + sortOptions = false, showDefaultValues = true, + footer = { + "%nExamples:", + " camel init hello.java", + " camel init hello.yaml", + " camel init hello.xml", + " camel init --list" }) public class Init extends CamelCommand { @Parameters(description = "Name of integration file (or a github link)", arity = "0..1", 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 3c8a946ccb994..12285babefab2 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 @@ -88,7 +88,15 @@ import static org.apache.camel.dsl.jbang.core.common.GitHubHelper.asGithubSingleUrl; import static org.apache.camel.dsl.jbang.core.common.GitHubHelper.fetchGithubUrls; -@Command(name = "run", description = "Run as local Camel integration", sortOptions = false, showDefaultValues = true) +@Command(name = "run", description = "Run as local Camel integration", sortOptions = false, showDefaultValues = true, + footer = { + "%nExamples:", + " camel run hello.java", + " camel run hello.yaml", + " camel run *", + " camel run hello.java --dev", + " camel run hello.java --port=8080", + " camel run https://gist.github.com/user/123456" }) public class Run extends CamelCommand { // special template for running camel-jbang in docker containers diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/SBOMGenerator.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/SBOMGenerator.java index 826e9bad39283..2def96fe6bd95 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/SBOMGenerator.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/SBOMGenerator.java @@ -34,7 +34,12 @@ @CommandLine.Command(name = "sbom", description = "Generate a CycloneDX or SPDX SBOM for a specific project", sortOptions = false, - showDefaultValues = true) + showDefaultValues = true, + footer = { + "%nExamples:", + " camel sbom hello.java", + " camel sbom hello.java --sbom-format=spdx", + " camel sbom hello.java --output-format=xml" }) public class SBOMGenerator extends Export { protected static final String EXPORT_DIR = CommandLineHelper.CAMEL_JBANG_WORK_DIR + "/export"; diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Script.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Script.java index 17030493cf293..5d60efca98ba8 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Script.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Script.java @@ -23,7 +23,11 @@ import picocli.CommandLine; @CommandLine.Command(name = "script", description = "Run Camel integration as shell script for terminal scripting", - sortOptions = false, showDefaultValues = true) + sortOptions = false, showDefaultValues = true, + footer = { + "%nExamples:", + " camel script hello.java", + " camel script hello.java --max-messages=10" }) public class Script extends CamelCommand { @CommandLine.Parameters(description = "Name of file", arity = "1", diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Shell.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Shell.java index 4eb84de7e2b58..eeffd993ed504 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Shell.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Shell.java @@ -48,7 +48,11 @@ @CommandLine.Command(name = "shell", description = "Interactive Camel JBang shell.", - footer = "Press Ctrl-C to exit.") + footer = { + "%nExamples:", + " camel shell", + "", + "Press Ctrl-C to exit." }) public class Shell extends CamelCommand { public Shell(CamelJBangMain main) { diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/TransformRoute.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/TransformRoute.java index bed812a5bb442..3e776e4a57143 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/TransformRoute.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/TransformRoute.java @@ -36,7 +36,11 @@ import picocli.CommandLine.Command; @Command(name = "route", description = "Transform Camel routes to XML or YAML format", sortOptions = false, - showDefaultValues = true) + showDefaultValues = true, + footer = { + "%nExamples:", + " camel transform route hello.java --format=yaml", + " camel transform route hello.xml --format=yaml" }) public class TransformRoute extends CamelCommand { public static class FormatCompletionCandidates implements Iterable { diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/WrapperCommand.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/WrapperCommand.java index b6429041c8a7f..51d16db5041cd 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/WrapperCommand.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/WrapperCommand.java @@ -31,7 +31,11 @@ import picocli.CommandLine.Command; @Command(name = "wrapper", description = "Install Camel wrapper scripts for version pinning", sortOptions = false, - showDefaultValues = true) + showDefaultValues = true, + footer = { + "%nExamples:", + " camel wrapper", + " camel wrapper --camel-version=4.10.0" }) public class WrapperCommand extends CamelCommand { private static final String DEFAULT_REPO_URL = "https://repo1.maven.org/maven2"; 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 ed03e9bd1ac9a..d3253d6db2822 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 @@ -50,7 +50,12 @@ import picocli.CommandLine; @CommandLine.Command(name = "log", - description = "Tail logs from running Camel integrations", sortOptions = false, showDefaultValues = true) + description = "Tail logs from running Camel integrations", sortOptions = false, showDefaultValues = true, + footer = { + "%nExamples:", + " camel cmd log hello", + " camel cmd log *", + " camel cmd log hello --tail=50" }) public class CamelLogAction extends ActionBaseCommand { private static final int NAME_MAX_WIDTH = 25; diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelSendAction.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelSendAction.java index 16569e746f1a6..7e80f9fb30814 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelSendAction.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/action/CamelSendAction.java @@ -51,7 +51,11 @@ @CommandLine.Command(name = "send", description = "Send messages to endpoints", sortOptions = false, - showDefaultValues = true) + showDefaultValues = true, + footer = { + "%nExamples:", + " camel cmd send --endpoint=kafka:myTopic --body='Hello World'", + " camel cmd send hello --endpoint=direct:foo --body='Hello'" }) public class CamelSendAction extends ActionBaseCommand { @CommandLine.Parameters(description = "To use an existing running Camel integration for sending the message (name or pid)", 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 d772f65473bff..b0a7a7900129d 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 @@ -60,7 +60,11 @@ @CommandLine.Command(name = "trace", description = "Tail message traces from running Camel integrations", sortOptions = false, - showDefaultValues = true) + showDefaultValues = true, + footer = { + "%nExamples:", + " camel cmd trace hello", + " camel cmd trace *" }) public class CamelTraceAction extends ActionBaseCommand { private static final int NAME_MAX_WIDTH = 25; diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/catalog/CatalogComponent.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/catalog/CatalogComponent.java index 3f4f602a0e499..154e96b3f38e3 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/catalog/CatalogComponent.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/catalog/CatalogComponent.java @@ -24,7 +24,11 @@ import picocli.CommandLine; @CommandLine.Command(name = "component", - description = "List components from the Camel Catalog", sortOptions = false, showDefaultValues = true) + description = "List components from the Camel Catalog", sortOptions = false, showDefaultValues = true, + footer = { + "%nExamples:", + " camel catalog component", + " camel catalog component --filter=kafka" }) public class CatalogComponent extends CatalogBaseCommand { public CatalogComponent(CamelJBangMain main) { 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 2416a4ab69526..1decb9941cdbe 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 @@ -51,7 +51,13 @@ @CommandLine.Command(name = "doc", description = "Shows documentation for kamelet, component, and other Camel resources", sortOptions = false, - showDefaultValues = true) + showDefaultValues = true, + footer = { + "%nExamples:", + " camel catalog doc kafka", + " camel catalog doc timer", + " camel catalog doc beer-source", + " camel catalog doc jsonpath" }) public class CatalogDoc extends CamelCommand { @CommandLine.Parameters(description = "Name of kamelet, component, dataformat, or other Camel resource", diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/catalog/CatalogKamelet.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/catalog/CatalogKamelet.java index 304ba8d84f288..f686576d58ac8 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/catalog/CatalogKamelet.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/catalog/CatalogKamelet.java @@ -38,7 +38,12 @@ import picocli.CommandLine; @CommandLine.Command(name = "kamelet", - description = "List Kamelets from the Kamelet Catalog", sortOptions = false, showDefaultValues = true) + description = "List Kamelets from the Kamelet Catalog", sortOptions = false, showDefaultValues = true, + footer = { + "%nExamples:", + " camel catalog kamelet", + " camel catalog kamelet --type=source", + " camel catalog kamelet --filter=kafka" }) public class CatalogKamelet extends CamelCommand { @CommandLine.Option(names = { "--sort" }, diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/config/ConfigGet.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/config/ConfigGet.java index 1331e5d48a78e..69fd0c074bbee 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/config/ConfigGet.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/config/ConfigGet.java @@ -24,7 +24,11 @@ import picocli.CommandLine; @CommandLine.Command(name = "get", - description = "Display user configuration value", sortOptions = false, showDefaultValues = true) + description = "Display user configuration value", sortOptions = false, showDefaultValues = true, + footer = { + "%nExamples:", + " camel config get camel-version", + " camel config get runtime" }) public class ConfigGet extends CamelCommand { @CommandLine.Parameters(description = "Configuration key", arity = "1") diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/config/ConfigSet.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/config/ConfigSet.java index 1f51bcd874fe1..2a8c748f42088 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/config/ConfigSet.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/config/ConfigSet.java @@ -25,7 +25,11 @@ import picocli.CommandLine; @CommandLine.Command(name = "set", - description = "Set user configuration value", sortOptions = false, showDefaultValues = true) + description = "Set user configuration value", sortOptions = false, showDefaultValues = true, + footer = { + "%nExamples:", + " camel config set camel-version=4.10.0", + " camel config set runtime=spring-boot" }) public class ConfigSet extends CamelCommand { @CommandLine.Parameters(description = "Configuration parameter (ex. key=value)", arity = "1") 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 0ace6069aedbc..f9fef9ae11ca1 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 @@ -41,7 +41,12 @@ import picocli.CommandLine.Command; @Command(name = "route", description = "Get status of Camel routes", - sortOptions = false, showDefaultValues = true) + sortOptions = false, showDefaultValues = true, + footer = { + "%nExamples:", + " camel get route", + " camel get route hello", + " camel get route --watch" }) public class CamelRouteStatus extends ProcessWatchCommand { @CommandLine.Parameters(description = "Name or pid of running Camel integration", arity = "0..1") diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelStatus.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelStatus.java index 466cf9e3befac..4b69a1bcf6c25 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelStatus.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelStatus.java @@ -22,7 +22,13 @@ @CommandLine.Command(name = "get", description = "Get status of Camel integrations (use get --help to see sub commands)", - sortOptions = false, showDefaultValues = true) + sortOptions = false, showDefaultValues = true, + footer = { + "%nExamples:", + " camel get", + " camel get route", + " camel get health", + " camel get endpoint" }) public class CamelStatus extends CamelCommand { @CommandLine.Option(names = { "--watch" }, diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelTop.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelTop.java index c5be9e2afb304..6bc9402291996 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelTop.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelTop.java @@ -22,7 +22,12 @@ @CommandLine.Command(name = "top", description = "Top status of Camel integrations (use top --help to see sub commands)", - sortOptions = false, showDefaultValues = true) + sortOptions = false, showDefaultValues = true, + footer = { + "%nExamples:", + " camel top", + " camel top route", + " camel top processor" }) public class CamelTop extends CamelCommand { @CommandLine.Option(names = { "--watch" }, 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 508e04c1aff69..3720a98e07af2 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 @@ -42,7 +42,11 @@ import picocli.CommandLine.Command; @Command(name = "health", description = "Get health check status of running Camel integrations", sortOptions = false, - showDefaultValues = true) + showDefaultValues = true, + footer = { + "%nExamples:", + " camel get health", + " camel get health --watch" }) public class ListHealth extends ProcessWatchCommand { @CommandLine.Option(names = { "--sort" }, completionCandidates = PidNameAgeCompletionCandidates.class, 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 d1d68372ec82b..e63dc4db4e7bb 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 @@ -38,7 +38,12 @@ import static org.apache.camel.dsl.jbang.core.common.CamelCommandHelper.extractState; -@Command(name = "ps", description = "List running Camel integrations", sortOptions = false, showDefaultValues = true) +@Command(name = "ps", description = "List running Camel integrations", sortOptions = false, showDefaultValues = true, + footer = { + "%nExamples:", + " camel ps", + " camel ps --sort=name", + " camel ps --watch" }) public class ListProcess extends ProcessWatchCommand { @CommandLine.Option(names = { "--sort" }, completionCandidates = PidNameAgeCompletionCandidates.class, diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/StopProcess.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/StopProcess.java index 6a5b66bdaa97e..78721470eb194 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/StopProcess.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/StopProcess.java @@ -26,7 +26,13 @@ import picocli.CommandLine; import picocli.CommandLine.Command; -@Command(name = "stop", description = "Shuts down running Camel integrations", sortOptions = false, showDefaultValues = true) +@Command(name = "stop", description = "Shuts down running Camel integrations", sortOptions = false, showDefaultValues = true, + footer = { + "%nExamples:", + " camel stop hello", + " camel stop *", + " camel stop 12345", + " camel stop hello --kill" }) public class StopProcess extends ProcessBaseCommand { @CommandLine.Parameters(description = "Name or pid of running Camel integration(s)", arity = "0..1") diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/version/VersionList.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/version/VersionList.java index 50b4291067ff0..cb1ccea2e0ef6 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/version/VersionList.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/version/VersionList.java @@ -65,7 +65,12 @@ import static org.apache.camel.dsl.jbang.core.common.CamelCommandHelper.CAMEL_INSTANCE_TYPE; @CommandLine.Command(name = "list", description = "Displays available Camel versions", - sortOptions = false, showDefaultValues = true) + sortOptions = false, showDefaultValues = true, + footer = { + "%nExamples:", + " camel version list", + " camel version list --runtime=spring-boot", + " camel version list --lts" }) public class VersionList extends CamelCommand { private static final String VERSION_LIST_CHECKER = ".camel-jbang-version-list.json"; diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/version/VersionSet.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/version/VersionSet.java index aad93b502d847..04d2659112f8f 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/version/VersionSet.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/version/VersionSet.java @@ -25,7 +25,12 @@ import picocli.CommandLine; @CommandLine.Command(name = "set", description = "Set/change current Camel version", sortOptions = false, - showDefaultValues = true) + showDefaultValues = true, + footer = { + "%nExamples:", + " camel version set 4.10.0", + " camel version set --runtime=spring-boot 4.10.0", + " camel version set --reset" }) public class VersionSet extends CamelCommand { @CommandLine.Parameters(description = "Camel version", arity = "0..1") From c381440747ac95bf22d42bf9beb8e414588f8e74 Mon Sep 17 00:00:00 2001 From: Guillaume Nodet Date: Mon, 23 Mar 2026 14:09:55 +0100 Subject: [PATCH 2/4] CAMEL-21966: Fix incorrect option names in examples - Debug: replace --suspend (non-existent) with --stop-on-exit=false - SBOMGenerator: replace --output-format with --sbom-output-format Co-Authored-By: Claude Opus 4.6 --- .../java/org/apache/camel/dsl/jbang/core/commands/Debug.java | 2 +- .../org/apache/camel/dsl/jbang/core/commands/SBOMGenerator.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Debug.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Debug.java index e5910cb1bdba3..c233b1539f27d 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Debug.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Debug.java @@ -79,7 +79,7 @@ "%nExamples:", " camel debug hello.java", " camel debug hello.yaml --breakpoint=myBreakpoint", - " camel debug hello.java --suspend" }) + " camel debug hello.java --stop-on-exit=false" }) public class Debug extends Run { @CommandLine.Option(names = { "--remote-attach" }, diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/SBOMGenerator.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/SBOMGenerator.java index 2def96fe6bd95..81f85fb3d84a8 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/SBOMGenerator.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/SBOMGenerator.java @@ -39,7 +39,7 @@ "%nExamples:", " camel sbom hello.java", " camel sbom hello.java --sbom-format=spdx", - " camel sbom hello.java --output-format=xml" }) + " camel sbom hello.java --sbom-output-format=xml" }) public class SBOMGenerator extends Export { protected static final String EXPORT_DIR = CommandLineHelper.CAMEL_JBANG_WORK_DIR + "/export"; From f4b070272d5b343bf4ec3adb6e068fde011daa6f Mon Sep 17 00:00:00 2001 From: Guillaume Nodet Date: Mon, 23 Mar 2026 15:02:02 +0100 Subject: [PATCH 3/4] CAMEL-21966: Fix example command paths to use top-level shortcuts - Complete: use 'camel completion' (registered name) instead of 'camel complete' - CamelLogAction: use 'camel log' (top-level shortcut) instead of 'camel cmd log' - CamelTraceAction: use 'camel trace' (top-level shortcut) instead of 'camel cmd trace' - CatalogDoc: use 'camel doc' (top-level shortcut) instead of 'camel catalog doc' Co-Authored-By: Claude Opus 4.6 --- .../apache/camel/dsl/jbang/core/commands/Complete.java | 2 +- .../dsl/jbang/core/commands/action/CamelLogAction.java | 6 +++--- .../dsl/jbang/core/commands/action/CamelTraceAction.java | 4 ++-- .../camel/dsl/jbang/core/commands/catalog/CatalogDoc.java | 8 ++++---- 4 files changed, 10 insertions(+), 10 deletions(-) diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Complete.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Complete.java index f90623e0279cd..f61e0a7a570be 100644 --- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Complete.java +++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Complete.java @@ -24,7 +24,7 @@ @CommandLine.Command(name = "complete", description = "Generate completion script for bash/zsh", footer = { "%nExamples:", - " source <(camel complete)" }) + " source <(camel completion)" }) public class Complete extends CamelCommand { public Complete(CamelJBangMain main) { 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 d3253d6db2822..aad9637a14c06 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 @@ -53,9 +53,9 @@ description = "Tail logs from running Camel integrations", sortOptions = false, showDefaultValues = true, footer = { "%nExamples:", - " camel cmd log hello", - " camel cmd log *", - " camel cmd log hello --tail=50" }) + " camel log hello", + " camel log *", + " camel log hello --tail=50" }) public class CamelLogAction extends ActionBaseCommand { private static final int NAME_MAX_WIDTH = 25; 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 b0a7a7900129d..397cd69ab7671 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 @@ -63,8 +63,8 @@ showDefaultValues = true, footer = { "%nExamples:", - " camel cmd trace hello", - " camel cmd trace *" }) + " camel trace hello", + " camel trace *" }) public class CamelTraceAction extends ActionBaseCommand { private static final int NAME_MAX_WIDTH = 25; 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 1decb9941cdbe..f4ad8cdd21cf8 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 @@ -54,10 +54,10 @@ showDefaultValues = true, footer = { "%nExamples:", - " camel catalog doc kafka", - " camel catalog doc timer", - " camel catalog doc beer-source", - " camel catalog doc jsonpath" }) + " camel doc kafka", + " camel doc timer", + " camel doc beer-source", + " camel doc jsonpath" }) public class CatalogDoc extends CamelCommand { @CommandLine.Parameters(description = "Name of kamelet, component, dataformat, or other Camel resource", From 4401bb12ad22faa9e2ab44a2068590c8d5d49d66 Mon Sep 17 00:00:00 2001 From: Guillaume Nodet Date: Tue, 24 Mar 2026 15:16:15 +0100 Subject: [PATCH 4/4] CAMEL-21966: Replace non-existent beer-source kamelet with aws-s3-source in example Co-Authored-By: Claude Opus 4.6 --- .../camel/dsl/jbang/core/commands/catalog/CatalogDoc.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) 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 f4ad8cdd21cf8..548f080bd4003 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 @@ -56,7 +56,7 @@ "%nExamples:", " camel doc kafka", " camel doc timer", - " camel doc beer-source", + " camel doc aws-s3-source", " camel doc jsonpath" }) public class CatalogDoc extends CamelCommand {