You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@camel.apache.org by da...@apache.org on 2023/08/08 18:11:45 UTC

[camel] branch main updated: CAMEL-19726: camel-jbang - Run with remote-debug enabled

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 c62e5fa4eae CAMEL-19726: camel-jbang - Run with remote-debug enabled
c62e5fa4eae is described below

commit c62e5fa4eaef0937bc4d77ce8a696784e9440087
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Tue Aug 8 20:11:34 2023 +0200

    CAMEL-19726: camel-jbang - Run with remote-debug enabled
---
 .../apache/camel/dsl/jbang/core/commands/Run.java  | 33 ++++++++++++++++------
 1 file changed, 24 insertions(+), 9 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 698daed3455..e06e7b4dbb9 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
@@ -161,6 +161,9 @@ public class Run extends CamelCommand {
             description = "Whether to allow automatic downloading JAR dependencies (over the internet)")
     boolean download = true;
 
+    @Option(names = { "--jvm-debug" }, defaultValue = "false", description = "To enable JVM remote debug on localhost:4004")
+    boolean jvmDebug;
+
     @Option(names = { "--name" }, defaultValue = "CamelJBang", description = "The name of the Camel application")
     String name;
 
@@ -615,18 +618,21 @@ public class Run extends CamelCommand {
         }
 
         // okay we have validated all input and are ready to run
-        if (camelVersion != null) {
-            // run in another JVM with different camel version (foreground or background)
-            boolean custom = camelVersion.contains("-") && !camelVersion.endsWith("-SNAPSHOT");
-            if (custom) {
-                // regular camel versions can also be a milestone or release candidate
-                custom = !camelVersion.matches(".*-(RC|M)\\d$");
+        if (camelVersion != null || jvmDebug) {
+            boolean custom = false;
+            if (camelVersion != null) {
+                // run in another JVM with different camel version (foreground or background)
+                custom = camelVersion.contains("-") && !camelVersion.endsWith("-SNAPSHOT");
+                if (custom) {
+                    // regular camel versions can also be a milestone or release candidate
+                    custom = !camelVersion.matches(".*-(RC|M)\\d$");
+                }
             }
             if (custom) {
                 // custom camel distribution
                 return runCustomCamelVersion(main);
             } else {
-                // apache camel distribution
+                // apache camel distribution or remote debug enabled
                 return runCamelVersion(main);
             }
         } else if (background) {
@@ -695,6 +701,7 @@ public class Run extends CamelCommand {
             openapi = answer.getProperty("camel.jbang.open-api", openapi);
             download = "true".equals(answer.getProperty("camel.jbang.download", download ? "true" : "false"));
             background = "true".equals(answer.getProperty("camel.jbang.background", background ? "true" : "false"));
+            jvmDebug = "true".equals(answer.getProperty("camel.jbang.jvmDebug", jvmDebug ? "true" : "false"));
             camelVersion = answer.getProperty("camel.jbang.camel-version", camelVersion);
             gav = answer.getProperty("camel.jbang.gav", gav);
         }
@@ -708,12 +715,20 @@ public class Run extends CamelCommand {
             cmds.remove("--background=true");
             cmds.remove("--background");
         }
-        cmds.remove("--camel-version=" + camelVersion);
+        if (camelVersion != null) {
+            cmds.remove("--camel-version=" + camelVersion);
+        }
         // need to use jbang command to specify camel version
         List<String> jbangArgs = new ArrayList<>();
         jbangArgs.add("jbang");
         jbangArgs.add("run");
-        jbangArgs.add("-Dcamel.jbang.version=" + camelVersion);
+        if (camelVersion != null) {
+            jbangArgs.add("-Dcamel.jbang.version=" + camelVersion);
+        }
+        if (jvmDebug) {
+            jbangArgs.add("--debug"); // jbang --debug
+            cmds.remove("--jvm-debug");
+        }
 
         if (repos != null) {
             jbangArgs.add("--repos=" + repos);