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

Reply via email to