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 58e89420060 CAMEL-18526: camel-jbang - Did you mean
58e89420060 is described below

commit 58e89420060eec9e028b6a3cb21ea2d3db95c18c
Author: Claus Ibsen <claus.ib...@gmail.com>
AuthorDate: Tue Sep 20 07:25:13 2022 +0200

    CAMEL-18526: camel-jbang - Did you mean
---
 .../jbang/core/commands/catalog/CatalogDoc.java    | 36 ++++++++++++++++++++--
 .../commands/catalog/KameletCatalogHelper.java     |  5 +++
 2 files changed, 39 insertions(+), 2 deletions(-)

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 8bde3d96b5d..93efa4747fd 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
@@ -31,6 +31,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.main.download.MavenGav;
+import org.apache.camel.main.util.SuggestSimilarHelper;
 import org.apache.camel.tooling.model.BaseOptionModel;
 import org.apache.camel.tooling.model.ComponentModel;
 import org.apache.camel.tooling.model.DataFormatModel;
@@ -111,9 +112,40 @@ public class CatalogDoc extends CamelCommand {
         }
 
         if (prefix == null) {
-            System.out.println("Camel resource: " + name + " not found");
+            // guess if a kamelet
+            List<String> suggestions;
+            boolean kamelet = name.endsWith("-sink") || 
name.endsWith("-source") || name.endsWith("-action");
+            if (kamelet) {
+                // kamelet names
+                suggestions = 
SuggestSimilarHelper.didYouMean(KameletCatalogHelper.findKameletNames(kameletsVersion),
 name);
+            } else {
+                // assume its a component
+                suggestions = 
SuggestSimilarHelper.didYouMean(catalog.findComponentNames(), name);
+            }
+            if (suggestions != null) {
+                String type = kamelet ? "kamelet" : "component";
+                System.out.printf("Camel %s: %s not found. Did you mean? 
%s%n", type, name, String.join(", ", suggestions));
+            } else {
+                System.out.println("Camel resource: " + name + " not found");
+            }
         } else {
-            System.out.println("Camel " + prefix + ": " + name + " not found");
+            List<String> suggestions = null;
+            if ("kamelet".equals(prefix)) {
+                suggestions = 
SuggestSimilarHelper.didYouMean(KameletCatalogHelper.findKameletNames(kameletsVersion),
 name);
+            } else if ("component".equals(prefix)) {
+                suggestions = 
SuggestSimilarHelper.didYouMean(catalog.findComponentNames(), name);
+            } else if ("dataformat".equals(prefix)) {
+                suggestions = 
SuggestSimilarHelper.didYouMean(catalog.findDataFormatNames(), name);
+            } else if ("language".equals(prefix)) {
+                suggestions = 
SuggestSimilarHelper.didYouMean(catalog.findLanguageNames(), name);
+            } else if ("other".equals(prefix)) {
+                suggestions = 
SuggestSimilarHelper.didYouMean(catalog.findOtherNames(), name);
+            }
+            if (suggestions != null) {
+                System.out.printf("Camel %s: %s not found. Did you mean? 
%s%n", prefix, name, String.join(", ", suggestions));
+            } else {
+                System.out.printf("Camel %s: %s not found.%n", prefix, name);
+            }
         }
         return 1;
     }
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/catalog/KameletCatalogHelper.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/catalog/KameletCatalogHelper.java
index 7ce469f9528..cb94881056d 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/catalog/KameletCatalogHelper.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/catalog/KameletCatalogHelper.java
@@ -32,6 +32,11 @@ public final class KameletCatalogHelper {
     private KameletCatalogHelper() {
     }
 
+    public static List<String> findKameletNames(String version) throws 
Exception {
+        Map<String, Object> kamelets = loadKamelets(version);
+        return new ArrayList<>(kamelets.keySet());
+    }
+
     public static KameletModel createModel(Object kamelet, boolean all) throws 
Exception {
         KameletModel km = new KameletModel();
         km.name = getName(kamelet);

Reply via email to