This is an automated email from the ASF dual-hosted git repository. gnodet pushed a commit to branch copy-shroud in repository https://gitbox.apache.org/repos/asf/camel.git
commit 82271a299da446b38f5c97ceb6aa97c65a08c8ce Author: Guillaume Nodet <[email protected]> AuthorDate: Tue Mar 24 07:56:47 2026 +0100 CAMEL-23236: Extend did-you-mean suggestions to more commands - CatalogBaseCommand: when filter returns no results, suggest similar names using SuggestSimilarHelper and hint about 'camel doc' - Run --example: suggest similar example names when unknown example given Co-Authored-By: Claude Opus 4.6 <[email protected]> --- .../java/org/apache/camel/dsl/jbang/core/commands/Run.java | 10 +++++++++- .../dsl/jbang/core/commands/catalog/CatalogBaseCommand.java | 11 +++++++++++ 2 files changed, 20 insertions(+), 1 deletion(-) 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 cefeb6046b1b..1429d77f2a47 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 @@ -380,11 +380,19 @@ public class Run extends CamelCommand { return 0; } + private static final List<String> EXAMPLE_NAMES = List.of("timer-log", "rest-api", "cron-log"); + private int runExample() throws Exception { String resourcePath = "examples/" + example + ".yaml"; InputStream is = Run.class.getClassLoader().getResourceAsStream(resourcePath); if (is == null) { - printer().printErr("Unknown example: " + example); + List<String> suggestions + = org.apache.camel.main.util.SuggestSimilarHelper.didYouMean(EXAMPLE_NAMES, example); + if (!suggestions.isEmpty()) { + printer().printErr("Unknown example: " + example + ". Did you mean? " + String.join(", ", suggestions)); + } else { + printer().printErr("Unknown example: " + example); + } printer().printErr("Run 'camel run --example-list' to see available examples."); return 1; } 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 288d7ad3defb..3cdc5b1cdeea 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 @@ -35,6 +35,7 @@ import org.apache.camel.dsl.jbang.core.common.RuntimeType; import org.apache.camel.dsl.jbang.core.common.RuntimeTypeConverter; import org.apache.camel.dsl.jbang.core.common.VersionHelper; import org.apache.camel.dsl.jbang.core.model.CatalogBaseDTO; +import org.apache.camel.main.util.SuggestSimilarHelper; import org.apache.camel.tooling.maven.MavenGav; import org.apache.camel.tooling.model.ArtifactModel; import org.apache.camel.util.json.Jsoner; @@ -167,6 +168,16 @@ public abstract class CatalogBaseCommand extends CamelCommand { new Column().header("SINCE").dataAlign(HorizontalAlign.RIGHT).with(r -> r.since), new Column().header("DESCRIPTION").dataAlign(HorizontalAlign.LEFT).with(this::shortDescription)))); } + } else if (filterName != null) { + // suggest similar names when filter returns no results + List<String> allNames = collectRows().stream().map(r -> r.name).collect(Collectors.toList()); + List<String> suggestions = SuggestSimilarHelper.didYouMean(allNames, filterName); + if (!suggestions.isEmpty()) { + printer().println("No results for filter: " + filterName + ". Did you mean? " + String.join(", ", suggestions)); + } else { + printer().println("No results for filter: " + filterName); + } + printer().println("Tip: use 'camel doc " + filterName + "' for detailed documentation."); } return 0;
