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 2022/11/11 12:31:26 UTC

[camel] 02/02: CAMEL-18712: camel-jbang - export dsl-modeline should only be included in needed

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

commit cccf15fe3e8fc2b1af9b177ded4d6238eeea1b26
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Fri Nov 11 13:31:10 2022 +0100

    CAMEL-18712: camel-jbang - export dsl-modeline should only be included in needed
---
 .../camel/dsl/jbang/core/commands/ExportBaseCommand.java     | 12 ++++++++++++
 .../camel/dsl/jbang/core/commands/ExportCamelMain.java       |  4 +++-
 .../apache/camel/dsl/jbang/core/commands/ExportQuarkus.java  |  7 ++++---
 .../camel/dsl/jbang/core/commands/ExportSpringBoot.java      |  9 +++++++--
 .../src/main/resources/templates/main-pom.tmpl               |  4 ----
 .../main/resources/templates/spring-boot-build-gradle.tmpl   |  1 -
 .../src/main/resources/templates/spring-boot-pom.tmpl        |  4 ----
 7 files changed, 26 insertions(+), 15 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 a90710100d2..e872efcf904 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
@@ -256,6 +256,8 @@ abstract class ExportBaseCommand extends CamelCommand {
                 // include kamelet catalog if we use kamelets
                 answer.add("mvn:org.apache.camel.kamelets:camel-kamelets:" + kameletsVersion);
                 answer.add("mvn:org.apache.camel.kamelets:camel-kamelets-utils:" + kameletsVersion);
+            } else if (line.startsWith("modeline=")) {
+                answer.add("camel:dsl-modeline");
             }
         }
 
@@ -480,6 +482,16 @@ abstract class ExportBaseCommand extends CamelCommand {
         return answer;
     }
 
+    protected static boolean hasModeline(File settings) {
+        try {
+            List<String> lines = Files.readAllLines(settings.toPath());
+            return lines.stream().anyMatch(l -> l.startsWith("modeline="));
+        } catch (Exception e) {
+            // ignore
+        }
+        return false;
+    }
+
     protected static void safeCopy(File source, File target, boolean override) throws Exception {
         if (!source.exists()) {
             return;
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportCamelMain.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportCamelMain.java
index 6647124f43e..73e6c079f52 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportCamelMain.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportCamelMain.java
@@ -96,6 +96,9 @@ class ExportCamelMain extends Export {
             if (!prop.containsKey("camel.main.basePackageScan") && !prop.containsKey("camel.main.base-package-scan")) {
                 prop.put("camel.main.basePackageScan", packageName);
             }
+            if (!hasModeline(settings)) {
+                prop.remove("camel.main.modeline");
+            }
             return prop;
         });
         // create main class
@@ -209,7 +212,6 @@ class ExportCamelMain extends Export {
         answer.removeIf(s -> s.contains("camel-core"));
         answer.removeIf(s -> s.contains("camel-main"));
         answer.removeIf(s -> s.contains("camel-health"));
-        answer.removeIf(s -> s.contains("camel-dsl-modeline"));
 
         // if platform-http is included then we need vertx as implementation
         if (answer.stream().anyMatch(s -> s.contains("camel-platform-http") && !s.contains("camel-platform-http-vertx"))) {
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportQuarkus.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportQuarkus.java
index f996cf24302..c3941c6822d 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportQuarkus.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportQuarkus.java
@@ -110,8 +110,9 @@ class ExportQuarkus extends Export {
         copySourceFiles(settings, profile, srcJavaDir, srcResourcesDir, srcCamelResourcesDir, packageName);
         // copy from settings to profile
         copySettingsAndProfile(settings, profile, srcResourcesDir, prop -> {
-            // turn off modeline as it is not supported in quarkus
-            prop.remove("camel.main.modeline");
+            if (!hasModeline(settings)) {
+                prop.remove("camel.main.modeline");
+            }
             return prop;
         });
         // copy docker files
@@ -379,10 +380,10 @@ class ExportQuarkus extends Export {
     protected Set<String> resolveDependencies(File settings, File profile) throws Exception {
         Set<String> answer = super.resolveDependencies(settings, profile);
 
+        // remove out of the box dependencies
         answer.removeIf(s -> s.contains("camel-core"));
         answer.removeIf(s -> s.contains("camel-platform-http"));
         answer.removeIf(s -> s.contains("camel-microprofile-health"));
-        answer.removeIf(s -> s.contains("camel-dsl-modeline"));
 
         return answer;
     }
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportSpringBoot.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportSpringBoot.java
index 4a31edff20c..ad1f94149ad 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportSpringBoot.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/ExportSpringBoot.java
@@ -103,7 +103,12 @@ class ExportSpringBoot extends Export {
         srcCamelResourcesDir.mkdirs();
         copySourceFiles(settings, profile, srcJavaDir, srcResourcesDir, srcCamelResourcesDir, packageName);
         // copy from settings to profile
-        copySettingsAndProfile(settings, profile, srcResourcesDir, null);
+        copySettingsAndProfile(settings, profile, srcResourcesDir, prop -> {
+            if (!hasModeline(settings)) {
+                prop.remove("camel.main.modeline");
+            }
+            return prop;
+        });
         // create main class
         createMainClassSource(srcJavaDir, packageName, mainClassname);
         // gather dependencies
@@ -333,8 +338,8 @@ class ExportSpringBoot extends Export {
     protected Set<String> resolveDependencies(File settings, File profile) throws Exception {
         Set<String> answer = super.resolveDependencies(settings, profile);
 
+        // remove out of the box dependencies
         answer.removeIf(s -> s.contains("camel-core"));
-        answer.removeIf(s -> s.contains("camel-dsl-modeline"));
 
         // if platform-http is included then we need servlet as implementation
         if (answer.stream().anyMatch(s -> s.contains("camel-platform-http") && !s.contains("camel-servlet"))) {
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/main-pom.tmpl b/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/main-pom.tmpl
index 3fb11a91c87..fe828433d39 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/main-pom.tmpl
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/main-pom.tmpl
@@ -36,10 +36,6 @@
             <groupId>org.apache.camel</groupId>
             <artifactId>camel-health</artifactId>
         </dependency>
-        <dependency>
-            <groupId>org.apache.camel</groupId>
-            <artifactId>camel-dsl-modeline</artifactId>
-        </dependency>
 {{ .CamelDependencies }}
 
         <!-- for logging in color -->
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/spring-boot-build-gradle.tmpl b/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/spring-boot-build-gradle.tmpl
index 3d64253738f..3cc5a119d25 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/spring-boot-build-gradle.tmpl
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/spring-boot-build-gradle.tmpl
@@ -18,7 +18,6 @@ dependencies {
     implementation 'org.springframework.boot:spring-boot-starter-web'
     implementation 'org.springframework.boot:spring-boot-starter-actuator'
     implementation 'org.apache.camel.springboot:camel-spring-boot-engine-starter:{{ .CamelVersion }}'
-    implementation 'org.apache.camel.springboot:camel-dsl-modeline-starter:{{ .CamelVersion }}'
 {{ .CamelDependencies }}
     testImplementation 'org.springframework.boot:spring-boot-starter-test'
     testImplementation 'org.apache.camel:camel-test-spring-junit5:{{ .CamelVersion }}'
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/spring-boot-pom.tmpl b/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/spring-boot-pom.tmpl
index 361297da6b6..5250bf41e28 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/spring-boot-pom.tmpl
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/resources/templates/spring-boot-pom.tmpl
@@ -56,10 +56,6 @@
             <groupId>org.apache.camel.springboot</groupId>
             <artifactId>camel-spring-boot-engine-starter</artifactId>
         </dependency>
-        <dependency>
-            <groupId>org.apache.camel.springboot</groupId>
-            <artifactId>camel-dsl-modeline-starter</artifactId>
-        </dependency>
 {{ .CamelDependencies }}
 
         <dependency>