You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2022/09/21 05:53:15 UTC

[camel] 01/02: camel-jbang - doc with url

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

commit 7606d2f28175369406146a55846a0ed1ef877c5a
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Wed Sep 21 07:47:39 2022 +0200

    camel-jbang - doc with url
---
 .../jbang/core/commands/catalog/CatalogDoc.java    | 92 +++++++++++++++++++++-
 1 file changed, 91 insertions(+), 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 e761bdbcd31..8c62e24f3df 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
@@ -48,6 +48,11 @@ public class CatalogDoc extends CamelCommand {
                             arity = "1")
     String name;
 
+    @CommandLine.Option(names = { "--url" },
+                        description = "Prints the link to the online documentation on the Camel website",
+                        defaultValue = "false")
+    boolean url;
+
     @CommandLine.Option(names = { "--filter" },
                         description = "Filter option listed in tables by name, description, or group")
     String filter;
@@ -61,7 +66,6 @@ public class CatalogDoc extends CamelCommand {
     String kameletsVersion;
 
     // TODO: endpoint uri to document the uri only
-    // TODO: --url to output url to website doc
     // TODO: --open-url to open the url in a browser
 
     final CamelCatalog catalog = new DefaultCamelCatalog(true);
@@ -153,6 +157,14 @@ public class CatalogDoc extends CamelCommand {
     }
 
     private void docKamelet(KameletModel km) {
+        String link = websiteLink("kamelet", name, kameletsVersion);
+        if (url) {
+            if (link != null) {
+                System.out.println(link);
+            }
+            return;
+        }
+
         System.out.printf("Kamelet Name: %s%n", km.name);
         System.out.printf("Kamelet Type: %s%n", km.type);
         System.out.println("Support Level: " + km.supportLevel);
@@ -206,9 +218,21 @@ public class CatalogDoc extends CamelCommand {
             System.out.println("");
         }
 
+        if (link != null) {
+            System.out.println(link);
+            System.out.println("");
+        }
     }
 
     private void docComponent(ComponentModel cm) {
+        String link = websiteLink("component", name, catalog.getCatalogVersion());
+        if (url) {
+            if (link != null) {
+                System.out.println(link);
+            }
+            return;
+        }
+
         if (cm.isDeprecated()) {
             System.out.printf("Component Name: %s (deprecated)%n", cm.getName());
         } else {
@@ -284,9 +308,22 @@ public class CatalogDoc extends CamelCommand {
                             .with(BaseOptionModel::getShortJavaType))));
             System.out.println("");
         }
+
+        if (link != null) {
+            System.out.println(link);
+            System.out.println("");
+        }
     }
 
     private void docDataFormat(DataFormatModel dm) {
+        String link = websiteLink("dataformat", name, catalog.getCatalogVersion());
+        if (url) {
+            if (link != null) {
+                System.out.println(link);
+            }
+            return;
+        }
+
         if (dm.isDeprecated()) {
             System.out.printf("Dataformat Name: %s (deprecated)%n", dm.getName());
         } else {
@@ -322,9 +359,22 @@ public class CatalogDoc extends CamelCommand {
                 new Column().header("TYPE").dataAlign(HorizontalAlign.LEFT).maxWidth(25, OverflowBehaviour.NEWLINE)
                         .with(BaseOptionModel::getShortJavaType))));
         System.out.println("");
+
+        if (link != null) {
+            System.out.println(link);
+            System.out.println("");
+        }
     }
 
     private void docLanguage(LanguageModel lm) {
+        String link = websiteLink("language", name, catalog.getCatalogVersion());
+        if (url) {
+            if (link != null) {
+                System.out.println(link);
+            }
+            return;
+        }
+
         if (lm.isDeprecated()) {
             System.out.printf("Language Name: %s (deprecated)%n", lm.getName());
         } else {
@@ -360,9 +410,22 @@ public class CatalogDoc extends CamelCommand {
                 new Column().header("TYPE").dataAlign(HorizontalAlign.LEFT).maxWidth(25, OverflowBehaviour.NEWLINE)
                         .with(BaseOptionModel::getShortJavaType))));
         System.out.println("");
+
+        if (link != null) {
+            System.out.println(link);
+            System.out.println("");
+        }
     }
 
     private void docOther(OtherModel om) {
+        String link = websiteLink("other", name, catalog.getCatalogVersion());
+        if (url) {
+            if (link != null) {
+                System.out.println(link);
+            }
+            return;
+        }
+
         if (om.isDeprecated()) {
             System.out.printf("Miscellaneous Name: %s (deprecated)%n", om.getName());
         } else {
@@ -378,6 +441,11 @@ public class CatalogDoc extends CamelCommand {
         System.out.println("        <version>" + om.getVersion() + "</version>");
         System.out.println("    </dependency>");
         System.out.println("");
+
+        if (link != null) {
+            System.out.println(link);
+            System.out.println("");
+        }
     }
 
     String getName(BaseOptionModel o) {
@@ -436,4 +504,26 @@ public class CatalogDoc extends CamelCommand {
                 .collect(Collectors.toList());
     }
 
+    String websiteLink(String prefix, String name, String version) {
+        String v = "next";
+        if (version != null && !version.endsWith("-SNAPSHOT")) {
+            // 3.18.2 -> 3.18.x
+            int pos = version.lastIndexOf('.');
+            v = version.substring(0, pos) + ".x";
+        }
+        if ("component".equals(prefix)) {
+            return String.format("https://camel.apache.org/components/%s/%s-component.html", v, name);
+        } else if ("dataformat".equals(prefix)) {
+            return String.format("https://camel.apache.org/components/%s/dataformats/%s-dataformat.html", v, name);
+        } else if ("language".equals(prefix)) {
+            return String.format("https://camel.apache.org/components/%s/languages/%s-language.html", v, name);
+        } else if ("other".equals(prefix)) {
+            return String.format("https://camel.apache.org/components/%s/others/%s.html", v, name);
+        } else if ("kamelet".equals(prefix)) {
+            return String.format("https://camel.apache.org/camel-kamelets/%s/%s.html", v, name);
+        }
+
+        return null;
+    }
+
 }