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>