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

cdeppisch 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 95dbe389508 chore(camel-jbang): Kubernetes export of current directory
95dbe389508 is described below

commit 95dbe3895089539132f80580d391d405e2000f1e
Author: Christoph Deppisch <[email protected]>
AuthorDate: Thu Sep 5 09:09:06 2024 +0200

    chore(camel-jbang): Kubernetes export of current directory
    
    - Allow Kubernetes export to use all files in the current directory
---
 .../apache/camel/dsl/jbang/core/commands/Run.java  |  5 +--
 .../camel/dsl/jbang/core/common/SourceHelper.java  | 42 +++++++++++++++++-----
 .../core/commands/kubernetes/MetadataHelper.java   |  8 ++++-
 3 files changed, 42 insertions(+), 13 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 a5bbccd45df..ba90abedf9a 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
@@ -78,9 +78,6 @@ 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" };
-
     private static final String[] ACCEPTED_XML_ROOT_ELEMENT_NAMES = new 
String[] {
             "route", "routes",
             "routeTemplate", "routeTemplates",
@@ -1563,7 +1560,7 @@ public class Run extends CamelCommand {
             }
             // if the ext is an accepted file then we include it as a 
potential route
             // (java files need to be included as route to support 
pojos/processors with routes)
-            return Arrays.stream(ACCEPTED_FILE_EXT).anyMatch(e -> 
e.equalsIgnoreCase(ext2));
+            return SourceHelper.isAcceptedSourceFile(ext2);
         } else {
             // assume match as it can be wildcard or dir
             return true;
diff --git 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/SourceHelper.java
 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/SourceHelper.java
index 59d8b6eb53b..1601dbd8a73 100644
--- 
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/SourceHelper.java
+++ 
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/common/SourceHelper.java
@@ -17,8 +17,11 @@
 
 package org.apache.camel.dsl.jbang.core.common;
 
+import java.io.File;
 import java.io.FileInputStream;
+import java.io.FileNotFoundException;
 import java.util.ArrayList;
+import java.util.Arrays;
 import java.util.Collections;
 import java.util.List;
 import java.util.StringJoiner;
@@ -34,6 +37,9 @@ import org.apache.camel.util.IOHelper;
 
 public class SourceHelper {
 
+    private static final String[] ACCEPTED_FILE_EXT
+            = new String[] { "java", "groovy", "js", "jsh", "kts", "xml", 
"yaml" };
+
     public static Source resolveSource(String source) {
         List<Source> resolved = 
resolveSources(Collections.singletonList(source));
         if (resolved.isEmpty()) {
@@ -52,7 +58,10 @@ public class SourceHelper {
         for (String source : sources) {
             SourceScheme sourceScheme = SourceScheme.fromUri(source);
             String fileExtension = FileUtil.onlyExt(source);
-            String fileName = SourceScheme.onlyName(FileUtil.onlyName(source)) 
+ "." + fileExtension;
+            String fileName = SourceScheme.onlyName(FileUtil.onlyName(source));
+            if (fileExtension != null) {
+                fileName = fileName + "." + fileExtension;
+            }
             try {
                 switch (sourceScheme) {
                     case GIST -> {
@@ -63,9 +72,9 @@ public class SourceHelper {
                             for (String uri : all.toString().split(",")) {
                                 resolved.add(new Source(
                                         sourceScheme,
-                                        fileName,
+                                        FileUtil.stripPath(uri),
                                         
IOHelper.loadText(resolver.resolve(uri).getInputStream()),
-                                        fileExtension, compression));
+                                        FileUtil.onlyExt(uri), compression));
                             }
                         }
                     }
@@ -114,16 +123,29 @@ public class SourceHelper {
                             for (String uri : all.toString().split(",")) {
                                 resolved.add(new Source(
                                         sourceScheme,
-                                        fileName,
+                                        FileUtil.stripPath(uri),
                                         
IOHelper.loadText(resolver.resolve(uri).getInputStream()),
-                                        fileExtension, compression));
+                                        FileUtil.onlyExt(uri), compression));
                             }
                         }
                     }
                     case UNKNOWN -> {
-                        try (FileInputStream fis = new 
FileInputStream(source)) {
-                            resolved.add(
-                                    new Source(sourceScheme, fileName, 
IOHelper.loadText(fis), fileExtension, compression));
+                        if (isAcceptedSourceFile(fileExtension)) {
+                            File sourceFile = new File(source);
+                            if (!sourceFile.exists()) {
+                                throw new FileNotFoundException("Source file 
'%s' does not exist".formatted(source));
+                            }
+
+                            if (!sourceFile.isDirectory()) {
+                                try (FileInputStream fis = new 
FileInputStream(sourceFile)) {
+                                    resolved.add(
+                                            new Source(
+                                                    sourceScheme,
+                                                    fileName,
+                                                    IOHelper.loadText(fis),
+                                                    fileExtension, 
compression));
+                                }
+                            }
                         }
                     }
                 }
@@ -134,4 +156,8 @@ public class SourceHelper {
         return resolved;
     }
 
+    public static boolean isAcceptedSourceFile(String fileExt) {
+        return Arrays.stream(ACCEPTED_FILE_EXT).anyMatch(e -> 
e.equalsIgnoreCase(fileExt));
+    }
+
 }
diff --git 
a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/MetadataHelper.java
 
b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/MetadataHelper.java
index 87c649d14bb..91fe9fffc74 100644
--- 
a/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/MetadataHelper.java
+++ 
b/dsl/camel-jbang/camel-jbang-plugin-kubernetes/src/main/java/org/apache/camel/dsl/jbang/core/commands/kubernetes/MetadataHelper.java
@@ -105,7 +105,13 @@ public class MetadataHelper {
     public static SourceMetadata readFromSource(CamelCatalog catalog, String 
location, String source) throws Exception {
         try (CamelContext context = createCamelContext()) {
             Resource resource = ResourceHelper.fromString(location, source);
-            PluginHelper.getRoutesLoader(context).loadRoutes(resource);
+
+            try {
+                PluginHelper.getRoutesLoader(context).loadRoutes(resource);
+            } catch (IllegalArgumentException e) {
+                // obviously no matching routes loader is available, return 
empty metadata
+                return new SourceMetadata();
+            }
 
             context.start();
 

Reply via email to