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;

Reply via email to