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 95ed2010c97 CAMEL-19708: camel-jbang - Export Main should support YAML 
resource fragments for kubernetes support
95ed2010c97 is described below

commit 95ed2010c972e711f72be8a2b7c1993018f92ffd
Author: Claus Ibsen <[email protected]>
AuthorDate: Sun Aug 6 08:44:58 2023 +0200

    CAMEL-19708: camel-jbang - Export Main should support YAML resource 
fragments for kubernetes support
---
 .../modules/ROOT/pages/camel-jbang.adoc            | 24 ++++++++++++++++++++++
 .../dsl/jbang/core/commands/ExportBaseCommand.java | 11 +++++++++-
 .../apache/camel/dsl/jbang/core/commands/Run.java  | 15 ++++++++++++++
 3 files changed, 49 insertions(+), 1 deletion(-)

diff --git a/docs/user-manual/modules/ROOT/pages/camel-jbang.adoc 
b/docs/user-manual/modules/ROOT/pages/camel-jbang.adoc
index db2b5843e91..aea0e83d456 100644
--- a/docs/user-manual/modules/ROOT/pages/camel-jbang.adoc
+++ b/docs/user-manual/modules/ROOT/pages/camel-jbang.adoc
@@ -2246,6 +2246,30 @@ jkube.recreate=true
 
 You can find more details in the https://eclipse.dev/jkube/docs/[Eclipse 
JKube] and 
https://github.com/GoogleContainerTools/jib/tree/master/jib-maven-plugin[Jib] 
documentations.
 
+===== Resource fragments
+
+Resource fragments allows to store external configuration in YAML resource 
descriptions, which
+will be exported to `src/main/jkube` directory.
+
+Camel JBang will export files that ends with `jkube.yaml` or `jkube.yml` into 
`src/main/jkube` directory.
+
+For example having the following file named `configmap.jkube.yaml`:
+
+[source,yaml]
+----
+metadata:
+  name: ${project.artifactId}
+data:
+  application.properties: |
+    # spring application properties file
+    welcome = Hello from Kubernetes ConfigMap!!!
+    dummy = some value
+----
+
+Will let Camel JBang export this into as `src/main/jkube/configmap.yaml`.
+
+You can find more information about resource fragments at the 
https://eclipse.dev/jkube/docs/kubernetes-maven-plugin/#_resource_fragments[Eclipse
 JKube] website.
+
 === Exporting with selected files
 
 By default, Camel will export what was last run, or all files from the current 
directory.
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 bd7df4db115..8ddc2dd4339 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
@@ -65,7 +65,8 @@ abstract class ExportBaseCommand extends CamelCommand {
             "camel.component.properties.location",
             "camel.component.kamelet.location",
             "camel.jbang.classpathFiles",
-            "camel.jbang.localKameletDir"
+            "camel.jbang.localKameletDir",
+            "camel.jbang.jkubeFiles"
     };
 
     private static final Pattern PACKAGE_PATTERN = Pattern.compile(
@@ -417,6 +418,7 @@ abstract class ExportBaseCommand extends CamelCommand {
                     boolean camel = 
"camel.main.routesIncludePattern".equals(k);
                     boolean kamelet = 
"camel.component.kamelet.location".equals(k)
                             || "camel.jbang.localKameletDir".equals(k);
+                    boolean jkube = "camel.jbang.jkubeFiles".equals(k);
                     File target = java ? srcJavaDir : camel ? 
srcCamelResourcesDir : srcResourcesDir;
                     File source = new File(f);
                     File out;
@@ -429,6 +431,13 @@ abstract class ExportBaseCommand extends CamelCommand {
                         if (kamelet) {
                             out = srcKameletsResourcesDir;
                             safeCopy(source, out, true);
+                        } else if (jkube) {
+                            // file should be renamed and moved into 
src/main/jkube
+                            f = f.replace(".jkube.yaml", ".yaml");
+                            f = f.replace(".jkube.yml", ".yml");
+                            out = new 
File(srcCamelResourcesDir.getParentFile().getParentFile(), "jkube/" + f);
+                            out.mkdirs();
+                            safeCopy(source, out, true);
                         } else {
                             safeCopy(source, out, true);
                         }
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 e8f0ca92555..698daed3455 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
@@ -440,6 +440,7 @@ public class Run extends CamelCommand {
         StringJoiner sjReload = new StringJoiner(",");
         StringJoiner sjClasspathFiles = new StringJoiner(",");
         StringJoiner sjKamelets = new StringJoiner(",");
+        StringJoiner sjJKubeFiles = new StringJoiner(",");
 
         // include generated openapi to files to run
         if (openapi != null) {
@@ -451,6 +452,10 @@ public class Run extends CamelCommand {
                 file = loadFromClipboard(file);
             } else if (skipFile(file)) {
                 continue;
+            } else if (jkubeFile(file)) {
+                // jkube
+                sjJKubeFiles.add(file);
+                continue;
             } else if (!knownFile(file) && !file.endsWith(".properties")) {
                 // non known files to be added on classpath
                 sjClasspathFiles.add(file);
@@ -549,6 +554,12 @@ public class Run extends CamelCommand {
         } else {
             writeSetting(main, profileProperties, 
"camel.jbang.classpathFiles", () -> null);
         }
+        if (sjJKubeFiles.length() > 0) {
+            main.addInitialProperty("camel.jbang.jkubeFiles", 
sjJKubeFiles.toString());
+            writeSettings("camel.jbang.jkubeFiles", sjJKubeFiles.toString());
+        } else {
+            writeSetting(main, profileProperties, "camel.jbang.jkubeFiles", () 
-> null);
+        }
 
         if (sjKamelets.length() > 0) {
             String loc = 
main.getInitialProperties().getProperty("camel.component.kamelet.location");
@@ -1078,6 +1089,10 @@ public class Run extends CamelCommand {
         return false;
     }
 
+    private boolean jkubeFile(String name) {
+        return name.endsWith(".jkube.yaml") || name.endsWith(".jkube.yml");
+    }
+
     private void writeSettings(String key, String value) {
         FileOutputStream fos = null;
         try {

Reply via email to