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/08/24 10:45:58 UTC
[camel] branch main updated: CANEL-18426: camel-jbang - Export - Add support for local-kamelets-dir
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 401ce291ee1 CANEL-18426: camel-jbang - Export - Add support for local-kamelets-dir
401ce291ee1 is described below
commit 401ce291ee1ddf9f5c07d97e263381c3804bc3d2
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Wed Aug 24 12:45:34 2022 +0200
CANEL-18426: camel-jbang - Export - Add support for local-kamelets-dir
---
.../modules/ROOT/pages/camel-jbang.adoc | 3 ++
.../camel/dsl/jbang/core/commands/Export.java | 2 ++
.../dsl/jbang/core/commands/ExportBaseCommand.java | 33 +++++++++++++++++++---
.../apache/camel/dsl/jbang/core/commands/Run.java | 4 +--
4 files changed, 36 insertions(+), 6 deletions(-)
diff --git a/docs/user-manual/modules/ROOT/pages/camel-jbang.adoc b/docs/user-manual/modules/ROOT/pages/camel-jbang.adoc
index 8081bb7f6d6..2983c4a80e1 100644
--- a/docs/user-manual/modules/ROOT/pages/camel-jbang.adoc
+++ b/docs/user-manual/modules/ROOT/pages/camel-jbang.adoc
@@ -980,6 +980,9 @@ The follow options related to _exporting_, can be configured in `application.pro
|`camel.jbang.kameletsVersion`
|Apache Camel Kamelets version
+|`camel.jbang.localKameletDir`
+|Local directory for loading Kamelets
+
|`camel.jbang.springBootVersion`
|Spring Boot version
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Export.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Export.java
index 9566f7adeca..12d95034297 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Export.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/Export.java
@@ -47,6 +47,7 @@ class Export extends ExportBaseCommand {
// allow configuring versions from profile
this.javaVersion = prop.getProperty("camel.jbang.javaVersion", this.javaVersion);
this.kameletsVersion = prop.getProperty("camel.jbang.kameletsVersion", this.kameletsVersion);
+ this.localKameletDir = prop.getProperty("camel.jbang.localKameletDir", this.localKameletDir);
this.quarkusGroupId = prop.getProperty("camel.jbang.quarkusGroupId", this.quarkusGroupId);
this.quarkusArtifactId = prop.getProperty("camel.jbang.quarkusArtifactId", this.quarkusArtifactId);
this.quarkusVersion = prop.getProperty("camel.jbang.quarkusVersion", this.quarkusVersion);
@@ -87,6 +88,7 @@ class Export extends ExportBaseCommand {
cmd.fresh = this.fresh;
cmd.javaVersion = this.javaVersion;
cmd.kameletsVersion = this.kameletsVersion;
+ cmd.localKameletDir = this.localKameletDir;
cmd.logging = this.logging;
cmd.loggingLevel = this.loggingLevel;
cmd.mainClassname = this.mainClassname;
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 99b581b0231..39086f52361 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
@@ -51,7 +51,8 @@ abstract class ExportBaseCommand extends CamelCommand {
"camel.main.routesIncludePattern",
"camel.component.properties.location",
"camel.component.kamelet.location",
- "camel.jbang.classpathFiles"
+ "camel.jbang.classpathFiles",
+ "camel.jbang.localKameletDir"
};
@CommandLine.Option(names = { "--profile" }, scope = CommandLine.ScopeType.INHERIT, defaultValue = "application",
@@ -80,6 +81,10 @@ abstract class ExportBaseCommand extends CamelCommand {
"--kamelets-version" }, description = "Apache Camel Kamelets version", defaultValue = "0.8.1")
protected String kameletsVersion;
+ @CommandLine.Option(names = { "--local-kamelet-dir" },
+ description = "Local directory for loading Kamelets (takes precedence)")
+ String localKameletDir;
+
@CommandLine.Option(names = { "--spring-boot-version" }, description = "Spring Boot version",
defaultValue = "2.7.3")
protected String springBootVersion;
@@ -148,6 +153,7 @@ abstract class ExportBaseCommand extends CamelCommand {
Run run = new Run(getMain());
// need to declare the profile to use for run
run.profile = profile;
+ run.localKameletDir = localKameletDir;
Integer code = run.runSilent();
return code;
}
@@ -271,7 +277,7 @@ abstract class ExportBaseCommand extends CamelCommand {
for (String k : SETTINGS_PROP_SOURCE_KEYS) {
String files = prop.getProperty(k);
- if (files != null) {
+ if (files != null && !files.isEmpty()) {
for (String f : files.split(",")) {
String scheme = getScheme(f);
if (scheme != null) {
@@ -284,10 +290,16 @@ abstract class ExportBaseCommand extends CamelCommand {
String ext = FileUtil.onlyExt(f, true);
boolean java = "java".equals(ext);
boolean camel = "camel.main.routesIncludePattern".equals(k)
- || "camel.component.kamelet.location".equals(k);
+ || "camel.component.kamelet.location".equals(k)
+ || "camel.jbang.localKameletDir".equals(k);
File target = java ? srcJavaDir : camel ? srcCamelResourcesDir : srcResourcesDir;
File source = new File(f);
- File out = new File(target, source.getName());
+ File out;
+ if (source.isDirectory()) {
+ out = target;
+ } else {
+ out = new File(target, source.getName());
+ }
safeCopy(source, out, true);
if (java) {
// need to append package name in java source file
@@ -394,6 +406,19 @@ abstract class ExportBaseCommand extends CamelCommand {
return;
}
+ if (source.isDirectory()) {
+ // flattern files if they are from a directory
+ File[] children = source.listFiles();
+ if (children != null) {
+ for (File child : children) {
+ if (child.isFile()) {
+ safeCopy(child, new File(target, child.getName()), override);
+ }
+ }
+ }
+ return;
+ }
+
if (!target.exists()) {
Files.copy(source.toPath(), target.toPath());
} else if (override) {
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 38298304958..a2057038835 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
@@ -690,8 +690,8 @@ class Run extends CamelCommand {
if (localKameletDir == null) {
main = new KameletMain();
} else {
- main = new KameletMain("file://" + localKameletDir);
- writeSettings("localKameletDir", localKameletDir);
+ main = new KameletMain("file:" + localKameletDir);
+ writeSettings("camel.jbang.localKameletDir", localKameletDir);
}
return main;
}