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 d6d64c88e849 CAMEL-23831: Pass profile to existing Maven projects and
fix TUI display consistency
d6d64c88e849 is described below
commit d6d64c88e84932d22753ff94fec25d8b5c79ef1c
Author: Claus Ibsen <[email protected]>
AuthorDate: Sat Jul 4 09:49:11 2026 +0200
CAMEL-23831: Pass profile to existing Maven projects and fix TUI display
consistency
- Pass camel.main.profile as JVM arg to camel-main, Quarkus and Spring Boot
existing Maven projects when profile is not the default (prod)
- Fix MSG/S column to fall back to TUI-computed throughput when runtime
reports zero (prod profile disables the runtime stat)
- Always show profile in overview info panel, default to prod
- Use consistent emoji for prod profile across run dialog and overview
- Fix file size alignment in files browser using CharWidth for emojis
Co-Authored-By: Claude Opus 4.6 <[email protected]>
Signed-off-by: Claus Ibsen <[email protected]>
---
.../apache/camel/dsl/jbang/core/commands/Run.java | 31 +++++++++++++++++++---
.../dsl/jbang/core/commands/tui/FilesBrowser.java | 3 ++-
.../dsl/jbang/core/commands/tui/OverviewTab.java | 27 ++++++++++++-------
.../jbang/core/commands/tui/RunOptionsForm.java | 2 +-
4 files changed, 47 insertions(+), 16 deletions(-)
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java
index d8cadac0d527..99603ac96d44 100644
---
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java
+++
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Run.java
@@ -1513,8 +1513,18 @@ public class Run extends CamelCommand {
cmd.add("--quiet");
cmd.add("--file");
cmd.add(tempPom.toString());
+ StringBuilder camelJvmArgs = new StringBuilder();
+ if (profile != null && !"prod".equals(profile)) {
+ camelJvmArgs.append("-Dcamel.main.profile=").append(profile);
+ }
if (jvmArgs != null && !jvmArgs.isBlank()) {
- cmd.add("-Dcamel.jvmArgs=" + jvmArgs.trim());
+ if (!camelJvmArgs.isEmpty()) {
+ camelJvmArgs.append(" ");
+ }
+ camelJvmArgs.append(jvmArgs.trim());
+ }
+ if (!camelJvmArgs.isEmpty()) {
+ cmd.add("-Dcamel.jvmArgs=" + camelJvmArgs);
}
cmd.add("-DskipTests");
cmd.add("camel:run");
@@ -1591,8 +1601,18 @@ public class Run extends CamelCommand {
cmd.add("--quiet");
cmd.add("--file");
cmd.add(tempPom.toString());
+ StringBuilder quarkusJvmArgs = new StringBuilder();
+ if (profile != null && !"prod".equals(profile)) {
+ quarkusJvmArgs.append("-Dcamel.main.profile=").append(profile);
+ }
if (jvmArgs != null && !jvmArgs.isBlank()) {
- cmd.add("-Djvm.args=" + jvmArgs.trim());
+ if (!quarkusJvmArgs.isEmpty()) {
+ quarkusJvmArgs.append(" ");
+ }
+ quarkusJvmArgs.append(jvmArgs.trim());
+ }
+ if (!quarkusJvmArgs.isEmpty()) {
+ cmd.add("-Djvm.args=" + quarkusJvmArgs);
}
cmd.add("-DskipTests");
cmd.add("package");
@@ -1815,9 +1835,12 @@ public class Run extends CamelCommand {
cmd.add("--quiet");
cmd.add("--file");
cmd.add(tempPom.toString());
- String sbJvmArgs =
"-Dlogging.config=classpath:logback-camel-jbang.xml";
+ StringBuilder sbJvmArgs = new
StringBuilder("-Dlogging.config=classpath:logback-camel-jbang.xml");
+ if (profile != null && !"prod".equals(profile)) {
+ sbJvmArgs.append(" -Dcamel.main.profile=").append(profile);
+ }
if (jvmArgs != null && !jvmArgs.isBlank()) {
- sbJvmArgs += " " + jvmArgs.trim();
+ sbJvmArgs.append(" ").append(jvmArgs.trim());
}
cmd.add("-Dspring-boot.run.jvmArguments=" + sbJvmArgs);
cmd.add("-DskipTests");
diff --git
a/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/FilesBrowser.java
b/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/FilesBrowser.java
index 443bacf46fb0..73ef0ef882f5 100644
---
a/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/FilesBrowser.java
+++
b/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/FilesBrowser.java
@@ -28,6 +28,7 @@ import dev.tamboui.layout.Rect;
import dev.tamboui.style.Color;
import dev.tamboui.style.Style;
import dev.tamboui.terminal.Frame;
+import dev.tamboui.text.CharWidth;
import dev.tamboui.text.Line;
import dev.tamboui.text.Span;
import dev.tamboui.tui.event.KeyEvent;
@@ -240,7 +241,7 @@ class FilesBrowser {
} else {
String sizeStr = formatFileSize(entry.size());
String nameLabel = String.format(" %s %s", entry.emoji(),
entry.name());
- int gap = Math.max(1, innerWidth - nameLabel.length() -
sizeStr.length() - 1);
+ int gap = Math.max(1, innerWidth - CharWidth.of(nameLabel) -
sizeStr.length() - 1);
String padding = " ".repeat(gap);
items[i] = ListItem.from(Line.from(
Span.raw(nameLabel + padding),
diff --git
a/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/OverviewTab.java
b/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/OverviewTab.java
index 7df8057a8698..09cb36256cdd 100644
---
a/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/OverviewTab.java
+++
b/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/OverviewTab.java
@@ -335,6 +335,16 @@ class OverviewTab extends AbstractTab {
nameSpans.add(Span.styled(" 📖", Style.EMPTY));
}
Line nameLine = Line.from(nameSpans);
+ String throughputDisplay = info.throughput;
+ if (throughputDisplay == null ||
"0.00".equals(throughputDisplay)) {
+ LinkedList<Long> tpHist = throughputHistory.get(info.pid);
+ if (tpHist != null && !tpHist.isEmpty()) {
+ long tp = tpHist.getLast();
+ if (tp > 0) {
+ throughputDisplay =
String.format(java.util.Locale.US, "%.2f", (double) tp);
+ }
+ }
+ }
rows.add(Row.from(
Cell.from(info.pid),
Cell.from(nameLine),
@@ -343,7 +353,7 @@ class OverviewTab extends AbstractTab {
Cell.from(Span.styled(stateText, statusStyle)),
Cell.from(info.ago != null ? info.ago : ""),
rightCell(info.routeStarted + "/" + info.routeTotal,
7),
- rightCell(info.throughput != null ? info.throughput :
"", 8),
+ rightCell(throughputDisplay != null ?
throughputDisplay : "", 8),
rightCell(String.valueOf(info.exchangesTotal), 8),
rightCell(String.valueOf(info.failed), 6, failStyle),
rightCell(String.valueOf(info.inflight), 8),
@@ -637,17 +647,14 @@ class OverviewTab extends AbstractTab {
Span.styled("Version: ", dim),
Span.raw(TuiHelper.truncate(sel.camelVersion,
inner.width() - 9))));
}
- if (sel.profile != null || sel.reloaded > 0) {
+ {
List<Span> profileSpans = new ArrayList<>();
- if (sel.profile != null) {
- profileSpans.add(Span.styled("Profile: ", dim));
- String profileEmoji = "dev".equals(sel.profile) ? "🛠️ " :
"prod".equals(sel.profile) ? "🔒 " : "";
- profileSpans.add(Span.raw(profileEmoji + sel.profile));
- }
+ profileSpans.add(Span.styled("Profile: ", dim));
+ String profile = sel.profile != null ? sel.profile : "prod";
+ String profileEmoji = "dev".equals(profile) ? "🛠️ " :
"prod".equals(profile) ? "📦 " : "";
+ profileSpans.add(Span.raw(profileEmoji + profile));
if (sel.reloaded > 0) {
- if (!profileSpans.isEmpty()) {
- profileSpans.add(Span.raw(" "));
- }
+ profileSpans.add(Span.raw(" "));
profileSpans.add(Span.styled("Reload: ", dim));
profileSpans.add(Span.raw(String.valueOf(sel.reloaded)));
}
diff --git
a/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/RunOptionsForm.java
b/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/RunOptionsForm.java
index 4c93d30b08c1..5968b19e7121 100644
---
a/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/RunOptionsForm.java
+++
b/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/RunOptionsForm.java
@@ -68,7 +68,7 @@ class RunOptionsForm {
private static final String[] MAX_FLAGS = { "--max-seconds=",
"--max-messages=", "--max-idle-seconds=" };
private static final String[] RUNTIME_LABELS = { "🐪 Camel Main", "🍃 Spring
Boot", "🚀 Quarkus" };
private static final String[] RUNTIME_VALUES = { "camel-main",
"spring-boot", "quarkus" };
- private static final String[] PROFILE_LABELS = { "🛠️ dev", "🔒 prod" };
+ private static final String[] PROFILE_LABELS = { "🛠️ dev", "📦 prod" };
private static final String[] PROFILE_VALUES = { "dev", "prod" };
// Text fields