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 87a072e1b6e CAMEL-18406: camel-jbang - Status command
87a072e1b6e is described below

commit 87a072e1b6e05f8ddfa46e594160fdacbe1b56cd
Author: Claus Ibsen <claus.ib...@gmail.com>
AuthorDate: Thu Aug 25 07:19:32 2022 +0200

    CAMEL-18406: camel-jbang - Status command
---
 camel-dependencies/pom.xml                         |  2 +-
 .../dsl/jbang/core/commands/ExportBaseCommand.java |  2 +-
 .../core/commands/process/CamelContextStatus.java  |  7 +++--
 .../core/commands/process/CamelRouteStatus.java    | 34 ++++++++++++++++-----
 .../jbang/core/commands/process/ListProcess.java   | 35 +++++++++++++++++++---
 .../core/commands/process/ProcessBaseCommand.java  |  7 -----
 parent/pom.xml                                     |  2 +-
 7 files changed, 65 insertions(+), 24 deletions(-)

diff --git a/camel-dependencies/pom.xml b/camel-dependencies/pom.xml
index 4c6d4f2b6d8..16ea2b4e4b6 100644
--- a/camel-dependencies/pom.xml
+++ b/camel-dependencies/pom.xml
@@ -51,7 +51,7 @@
     
<arquillian-jetty-embedded-9-version>1.0.0.CR3</arquillian-jetty-embedded-9-version>
     <arquillian-version>1.6.0.Final</arquillian-version>
     
<arquillian-weld-embedded-version>2.0.0.Final</arquillian-weld-embedded-version>
-    <ascii-table-version>1.3.0</ascii-table-version>
+    <ascii-table-version>1.4.0</ascii-table-version>
     <asm-version>8.0.1</asm-version>
     <asn1bean-version>1.13.0</asn1bean-version>
     <assertj-version>3.23.1</assertj-version>
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportBaseCommand.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportBaseCommand.java
index 36e69b04fe3..9f21a71097a 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportBaseCommand.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportBaseCommand.java
@@ -98,7 +98,7 @@ abstract class ExportBaseCommand extends CamelCommand {
     protected String quarkusArtifactId;
 
     @CommandLine.Option(names = { "--quarkus-version" }, description = 
"Quarkus Platform version",
-                        defaultValue = "2.11.2.Final")
+                        defaultValue = "2.11.3.Final")
     protected String quarkusVersion;
 
     @CommandLine.Option(names = { "--maven-wrapper" }, defaultValue = "true",
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 e78aa8bb8d4..a43f274dbd7 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
@@ -27,6 +27,7 @@ import java.util.Map;
 import com.github.freva.asciitable.AsciiTable;
 import com.github.freva.asciitable.Column;
 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.util.IOHelper;
 import org.apache.camel.util.ObjectHelper;
@@ -102,8 +103,8 @@ public class CamelContextStatus extends ProcessBaseCommand {
         if (!rows.isEmpty()) {
             System.out.println(AsciiTable.getTable(AsciiTable.NO_BORDERS, 
rows, Arrays.asList(
                     new 
Column().header("PID").headerAlign(HorizontalAlign.CENTER).with(r -> r.pid),
-                    new 
Column().header("NAME").dataAlign(HorizontalAlign.LEFT).maxColumnWidth(30)
-                            .with(r -> maxWidth(r.name, 28)),
+                    new 
Column().header("NAME").dataAlign(HorizontalAlign.LEFT).maxWidth(30, 
OverflowBehaviour.ELLIPSIS)
+                            .with(r -> r.name),
                     new 
Column().header("READY").dataAlign(HorizontalAlign.CENTER).with(r -> r.ready),
                     new 
Column().header("STATE").headerAlign(HorizontalAlign.CENTER)
                             .with(r -> StringHelper.capitalize(r.state)),
@@ -111,7 +112,7 @@ public class CamelContextStatus extends ProcessBaseCommand {
                     new Column().header("TOTAL").with(r -> r.total),
                     new Column().header("FAILED").with(r -> r.failed),
                     new Column().header("INFLIGHT").with(r -> r.inflight),
-                    new Column().header("LAST AGO").with(r -> r.sinceLast))));
+                    new Column().header("SINCE-LAST").with(r -> 
r.sinceLast))));
         }
 
         return 0;
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelRouteStatus.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelRouteStatus.java
index 3359cc518f6..62267d0efca 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelRouteStatus.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/CamelRouteStatus.java
@@ -27,7 +27,9 @@ import java.util.Map;
 import com.github.freva.asciitable.AsciiTable;
 import com.github.freva.asciitable.Column;
 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.util.FileUtil;
 import org.apache.camel.util.IOHelper;
 import org.apache.camel.util.ObjectHelper;
 import org.apache.camel.util.StringHelper;
@@ -131,14 +133,16 @@ public class CamelRouteStatus extends ProcessBaseCommand {
         rows.sort(this::sortRow);
 
         if (!rows.isEmpty()) {
+            boolean sources = rows.stream().noneMatch(r -> r.source == null);
             System.out.println(AsciiTable.getTable(AsciiTable.NO_BORDERS, 
rows, Arrays.asList(
                     new 
Column().header("PID").headerAlign(HorizontalAlign.CENTER).with(r -> r.pid),
-                    new 
Column().header("NAME").dataAlign(HorizontalAlign.LEFT).maxColumnWidth(30)
-                            .with(r -> maxWidth(r.name, 28)),
-                    new 
Column().header("ID").dataAlign(HorizontalAlign.LEFT).maxColumnWidth(30)
-                            .with(r -> maxWidth(r.routeId, 28)),
-                    new 
Column().header("FROM").dataAlign(HorizontalAlign.LEFT).maxColumnWidth(40)
-                            .with(r -> maxWidth(r.from, 38)),
+                    new Column().header(sources ? "SOURCE" : 
"NAME").dataAlign(HorizontalAlign.LEFT)
+                            .maxWidth(30, OverflowBehaviour.CLIP)
+                            .with(r -> sourceLocLine(sources ? r.source : 
r.name)),
+                    new 
Column().header("ID").dataAlign(HorizontalAlign.LEFT).maxWidth(25, 
OverflowBehaviour.ELLIPSIS)
+                            .with(r -> r.routeId),
+                    new 
Column().header("FROM").dataAlign(HorizontalAlign.LEFT).maxWidth(40, 
OverflowBehaviour.ELLIPSIS)
+                            .with(r -> r.from),
                     new 
Column().header("STATE").headerAlign(HorizontalAlign.CENTER)
                             .with(r -> StringHelper.capitalize(r.state)),
                     new 
Column().header("AGE").headerAlign(HorizontalAlign.CENTER).with(r -> r.uptime),
@@ -148,7 +152,7 @@ public class CamelRouteStatus extends ProcessBaseCommand {
                     new Column().header("MEAN").with(r -> r.mean),
                     new Column().header("MIN").with(r -> r.min),
                     new Column().header("MAX").with(r -> r.max),
-                    new Column().header("LAST AGO").with(r -> r.sinceLast))));
+                    new Column().header("SINCE-LAST").with(r -> 
r.sinceLast))));
         }
 
         return 0;
@@ -169,6 +173,22 @@ public class CamelRouteStatus extends ProcessBaseCommand {
         return null;
     }
 
+    protected String sourceLocLine(String location) {
+        while (StringHelper.countChar(location, ':') > 1) {
+            location = location.substring(location.indexOf(':') + 1);
+        }
+        int pos = location.indexOf(':');
+        // is the colon as scheme or line number
+        String last = location.substring(pos + 1);
+        boolean digits = last.matches("\\d+");
+        if (!digits) {
+            // it must be scheme so clip that
+            location = location.substring(pos + 1);
+        }
+        location = FileUtil.stripPath(location);
+        return location;
+    }
+
     protected int sortRow(Row o1, Row o2) {
         // no sort by default
         return 0;
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListProcess.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListProcess.java
index 3f022678093..55233f1f528 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListProcess.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ListProcess.java
@@ -16,6 +16,14 @@
  */
 package org.apache.camel.dsl.jbang.core.commands.process;
 
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.List;
+
+import com.github.freva.asciitable.AsciiTable;
+import com.github.freva.asciitable.Column;
+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.util.ObjectHelper;
 import org.apache.camel.util.TimeUtils;
@@ -35,6 +43,8 @@ public class ListProcess extends ProcessBaseCommand {
 
     @Override
     public Integer call() throws Exception {
+        List<Row> rows = new ArrayList<>();
+
         ProcessHandle.allProcesses()
                 .sorted((o1, o2) -> {
                     switch (sort) {
@@ -50,13 +60,30 @@ public class ListProcess extends ProcessBaseCommand {
                     }
                 })
                 .forEach(ph -> {
-                    String name = extractName(ph);
-                    if (ObjectHelper.isNotEmpty(name)) {
-                        String ago = TimeUtils.printSince(extractSince(ph));
-                        System.out.println(ph.pid() + " camel run " + name + " 
(age: " + ago + ")");
+                    Row row = new Row();
+                    row.name = extractName(ph);
+                    if (ObjectHelper.isNotEmpty(row.name)) {
+                        row.pid = "" + ph.pid();
+                        row.age = TimeUtils.printSince(extractSince(ph));
+                        rows.add(row);
                     }
                 });
+
+        if (!rows.isEmpty()) {
+            System.out.println(AsciiTable.getTable(AsciiTable.NO_BORDERS, 
rows, Arrays.asList(
+                    new 
Column().header("PID").headerAlign(HorizontalAlign.CENTER).with(r -> r.pid),
+                    new 
Column().header("NAME").dataAlign(HorizontalAlign.LEFT).maxWidth(40, 
OverflowBehaviour.ELLIPSIS)
+                            .with(r -> r.name),
+                    new 
Column().header("AGE").headerAlign(HorizontalAlign.CENTER).with(r -> r.age))));
+        }
+
         return 0;
     }
 
+    private static class Row {
+        String pid;
+        String name;
+        String age;
+    }
+
 }
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ProcessBaseCommand.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ProcessBaseCommand.java
index 727dbfe3ca5..82abe67c958 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ProcessBaseCommand.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/process/ProcessBaseCommand.java
@@ -94,11 +94,4 @@ abstract class ProcessBaseCommand extends CamelCommand {
         return since;
     }
 
-    static String maxWidth(String text, int max) {
-        if (text == null || text.length() <= max) {
-            return text;
-        }
-        return text.substring(0, max);
-    }
-
 }
diff --git a/parent/pom.xml b/parent/pom.xml
index 2fb96328770..ada162bf669 100644
--- a/parent/pom.xml
+++ b/parent/pom.xml
@@ -68,7 +68,7 @@
         
<arquillian-jetty-embedded-9-version>1.0.0.CR3</arquillian-jetty-embedded-9-version>
         <arquillian-version>1.6.0.Final</arquillian-version>
         
<arquillian-weld-embedded-version>2.0.0.Final</arquillian-weld-embedded-version>
-        <ascii-table-version>1.3.0</ascii-table-version>
+        <ascii-table-version>1.4.0</ascii-table-version>
         <asm-version>8.0.1</asm-version>
         <asn1bean-version>1.13.0</asn1bean-version>
         <assertj-version>3.23.1</assertj-version>

Reply via email to