This is an automated email from the ASF dual-hosted git repository.

davsclaus pushed a commit to branch runq
in repository https://gitbox.apache.org/repos/asf/camel.git

commit b72b33f3600f93c130148c4afbc2b385ffff3788
Author: Claus Ibsen <claus.ib...@gmail.com>
AuthorDate: Wed Apr 24 12:28:47 2024 +0200

    CAMEL-19041: camel-jbang - Run with runtime for spring-boot and quarkus
---
 .../dsl/jbang/core/commands/ExportBaseCommand.java |  1 -
 .../apache/camel/dsl/jbang/core/commands/Run.java  | 28 +++++++++++++++-------
 2 files changed, 19 insertions(+), 10 deletions(-)

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 c741b4e4db1..24f0803d95c 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
@@ -64,7 +64,6 @@ import picocli.CommandLine;
 abstract class ExportBaseCommand extends CamelCommand {
 
     protected static final String BUILD_DIR = 
CommandLineHelper.CAMEL_JBANG_WORK_DIR + "/work";
-    protected static final String RUN_DIR = 
CommandLineHelper.CAMEL_JBANG_WORK_DIR + "/run";
 
     protected static final String[] SETTINGS_PROP_SOURCE_KEYS = new String[] {
             "camel.main.routesIncludePattern",
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 0128045d609..67ea4f0bf91 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
@@ -87,6 +87,7 @@ import static 
org.apache.camel.dsl.jbang.core.common.GitHubHelper.fetchGithubUrl
 public class Run extends CamelCommand {
 
     public static final String RUN_SETTINGS_FILE = 
"camel-jbang-run.properties";
+    private static final String RUN_PLATFORM_DIR = ".camel-jbang-run";
 
     private static final String[] ACCEPTED_FILE_EXT
             = new String[] { "java", "groovy", "js", "jsh", "kts", "xml", 
"yaml" };
@@ -848,13 +849,19 @@ public class Run extends CamelCommand {
     }
 
     protected int runQuarkus() throws Exception {
+        // create temp run dir
+        File runDir = new File(RUN_PLATFORM_DIR, "" + 
System.currentTimeMillis());
+        if (!this.background) {
+            runDir.deleteOnExit();
+        }
+
         // export to hidden folder
         ExportQuarkus eq = new ExportQuarkus(getMain());
         eq.symbolicLink = true;
         eq.quarkusVersion = this.quarkusVersion;
         eq.camelVersion = this.camelVersion;
         eq.kameletsVersion = this.kameletsVersion;
-        eq.exportDir = ExportBaseCommand.RUN_DIR;
+        eq.exportDir = runDir.toString();
         eq.exclude = this.exclude;
         eq.filePaths = this.filePaths;
         eq.files = this.files;
@@ -883,7 +890,7 @@ public class Run extends CamelCommand {
         }
         // run quarkus via maven
         ProcessBuilder pb = new ProcessBuilder();
-        pb.command(ExportBaseCommand.RUN_DIR + "/mvnw", "--quiet", "--file", 
ExportBaseCommand.RUN_DIR, "quarkus:dev");
+        pb.command(runDir + "/mvnw", "--quiet", "--file", runDir.toString(), 
"quarkus:dev");
 
         if (background) {
             Process p = pb.start();
@@ -903,6 +910,12 @@ public class Run extends CamelCommand {
     }
 
     protected int runSpringBoot() throws Exception {
+        // create temp run dir
+        File runDir = new File(RUN_PLATFORM_DIR, "" + 
System.currentTimeMillis());
+        if (!this.background) {
+            runDir.deleteOnExit();
+        }
+
         // export to hidden folder
         ExportSpringBoot eq = new ExportSpringBoot(getMain());
         eq.symbolicLink = true;
@@ -910,7 +923,7 @@ public class Run extends CamelCommand {
         eq.camelVersion = this.camelVersion;
         eq.camelSpringBootVersion = this.camelVersion;
         eq.kameletsVersion = this.kameletsVersion;
-        eq.exportDir = ExportBaseCommand.RUN_DIR;
+        eq.exportDir = runDir.toString();
         eq.exclude = this.exclude;
         eq.filePaths = this.filePaths;
         eq.files = this.files;
@@ -935,13 +948,10 @@ public class Run extends CamelCommand {
         eq.loggingLevel = "off";
 
         System.out.println("Running using Spring Boot v" + 
eq.springBootVersion + " (preparing and downloading files)");
-        // TODO: if error exporting we should report error (log output)
-        // TODO: run in unique sub folder
-        // TODO: delete sub folder on exit
         // TODO: camel log from spring-boot/quarkus is not possible
         // TODO: copy files using symbolic link so you can edit the file 
(TODO: application.properties)
-        // TODO: camel stop does not stop quarkus correctly (spring boot do 
that)
-        // TODO: camel get does not show Quarkus as platform (spring boot do 
that)
+        // TODO: camel stop does not stop quarkus correctly (spring boot does 
that)
+        // TODO: camel get does not show Quarkus as platform (spring boot does 
that)
         // TODO: spring-boot dev-tools reloading could update camel reload 
counter
 
         // run export
@@ -951,7 +961,7 @@ public class Run extends CamelCommand {
         }
         // run spring-boot via maven
         ProcessBuilder pb = new ProcessBuilder();
-        pb.command(ExportBaseCommand.RUN_DIR + "/mvnw", "--quiet", "--file", 
ExportBaseCommand.RUN_DIR, "spring-boot:run");
+        pb.command(runDir + "/mvnw", "--quiet", "--file", runDir.toString(), 
"spring-boot:run");
 
         if (background) {
             Process p = pb.start();

Reply via email to