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 247f6a9ad8e CAMEL-19272: camel-jbang - Show jbang version
247f6a9ad8e is described below

commit 247f6a9ad8e25dece9a4b58ff1a8ae49cbb835ab
Author: Claus Ibsen <[email protected]>
AuthorDate: Mon Apr 17 09:57:54 2023 +0200

    CAMEL-19272: camel-jbang - Show jbang version
---
 .../core/commands/process/CamelContextStatus.java    | 13 ++++++++++++-
 .../jbang/core/commands/process/CamelContextTop.java | 13 ++++++++++++-
 .../dsl/jbang/core/commands/version/VersionGet.java  |  6 ++++++
 .../camel/dsl/jbang/core/common/VersionHelper.java   | 20 ++++++++++++++++++++
 4 files changed, 50 insertions(+), 2 deletions(-)

diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelContextStatus.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelContextStatus.java
index 2adb6813819..f77031baca0 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelContextStatus.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelContextStatus.java
@@ -28,6 +28,7 @@ import com.github.freva.asciitable.OverflowBehaviour;
 import org.apache.camel.dsl.jbang.core.commands.CamelJBangMain;
 import org.apache.camel.dsl.jbang.core.common.PidNameAgeCompletionCandidates;
 import org.apache.camel.dsl.jbang.core.common.ProcessHelper;
+import org.apache.camel.dsl.jbang.core.common.VersionHelper;
 import org.apache.camel.util.TimeUtils;
 import org.apache.camel.util.json.JsonArray;
 import org.apache.camel.util.json.JsonObject;
@@ -74,7 +75,8 @@ public class CamelContextStatus extends ProcessWatchCommand {
                         row.age = TimeUtils.printSince(row.uptime);
                         JsonObject runtime = (JsonObject) root.get("runtime");
                         row.platform = extractPlatform(ph, runtime);
-                        row.platformVersion = runtime != null ? 
runtime.getString("platformVersion") : null;
+                        row.platformVersion = 
extractPlatformVersion(row.platform,
+                                runtime != null ? 
runtime.getString("platformVersion") : null);
                         row.state = context.getInteger("phase");
                         row.camelVersion = context.getString("version");
                         Map<String, ?> stats = context.getMap("statistics");
@@ -170,6 +172,15 @@ public class CamelContextStatus extends 
ProcessWatchCommand {
         return answer;
     }
 
+    private String extractPlatformVersion(String platform, String 
platformVersion) {
+        if (platformVersion == null) {
+            if ("JBang".equals(platform)) {
+                platformVersion = VersionHelper.getJBangVersion();
+            }
+        }
+        return platformVersion;
+    }
+
     protected int sortRow(Row o1, Row o2) {
         String s = sort;
         int negate = 1;
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelContextTop.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelContextTop.java
index c85d2705d9f..a4455265626 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelContextTop.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelContextTop.java
@@ -28,6 +28,7 @@ import com.github.freva.asciitable.HorizontalAlign;
 import com.github.freva.asciitable.OverflowBehaviour;
 import org.apache.camel.dsl.jbang.core.commands.CamelJBangMain;
 import org.apache.camel.dsl.jbang.core.common.ProcessHelper;
+import org.apache.camel.dsl.jbang.core.common.VersionHelper;
 import org.apache.camel.util.TimeUtils;
 import org.apache.camel.util.json.JsonObject;
 import picocli.CommandLine;
@@ -86,7 +87,8 @@ public class CamelContextTop extends ProcessWatchCommand {
                         row.ago = TimeUtils.printSince(row.uptime);
                         JsonObject runtime = (JsonObject) root.get("runtime");
                         row.platform = extractPlatform(ph, runtime);
-                        row.platformVersion = runtime != null ? 
runtime.getString("platformVersion") : null;
+                        row.platformVersion = 
extractPlatformVersion(row.platform,
+                                runtime != null ? 
runtime.getString("platformVersion") : null);
                         row.javaVersion = runtime != null ? 
runtime.getString("javaVersion") : null;
                         row.state = context.getInteger("phase");
                         row.camelVersion = context.getString("version");
@@ -172,6 +174,15 @@ public class CamelContextTop extends ProcessWatchCommand {
         return answer;
     }
 
+    private String extractPlatformVersion(String platform, String 
platformVersion) {
+        if (platformVersion == null) {
+            if ("JBang".equals(platform)) {
+                platformVersion = VersionHelper.getJBangVersion();
+            }
+        }
+        return platformVersion;
+    }
+
     protected int sortRow(Row o1, Row o2) {
         String s = sort;
         int negate = 1;
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/version/VersionGet.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/version/VersionGet.java
index 35161297f54..1ab33c625d7 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/version/VersionGet.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/version/VersionGet.java
@@ -21,6 +21,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.dsl.jbang.core.common.CommandLineHelper;
+import org.apache.camel.dsl.jbang.core.common.VersionHelper;
 import picocli.CommandLine;
 
 @CommandLine.Command(name = "get", description = "Displays current Camel 
version")
@@ -32,6 +33,11 @@ public class VersionGet extends CamelCommand {
 
     @Override
     public Integer doCall() throws Exception {
+        String jv = VersionHelper.getJBangVersion();
+        if (jv != null) {
+            System.out.println("JBang version: " + jv);
+        }
+
         CamelCatalog catalog = new DefaultCamelCatalog();
         String v = catalog.getCatalogVersion();
         System.out.println("Camel JBang version: " + v);
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/VersionHelper.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/VersionHelper.java
index 3c60bd603da..b2362cc445d 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/VersionHelper.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/VersionHelper.java
@@ -16,6 +16,10 @@
  */
 package org.apache.camel.dsl.jbang.core.common;
 
+import java.io.File;
+import java.io.FileInputStream;
+
+import org.apache.camel.util.IOHelper;
 import org.apache.camel.util.StringHelper;
 
 public final class VersionHelper {
@@ -23,6 +27,22 @@ public final class VersionHelper {
     private VersionHelper() {
     }
 
+    public static String getJBangVersion() {
+        try {
+            File file = new File(System.getProperty("user.home"), 
".jbang/cache/version.txt");
+            if (file.exists() && file.isFile()) {
+                FileInputStream fis = new FileInputStream(file);
+                String text = IOHelper.loadText(fis);
+                IOHelper.close(fis);
+                text = text.trim();
+                return text;
+            }
+        } catch (Exception e) {
+            // ignore
+        }
+        return null;
+    }
+
     public static boolean isGE(String source, String target) {
         return compare(source, target) >= 0;
     }

Reply via email to