This is an automated email from the ASF dual-hosted git repository.
orpiske 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 b0ca162 Added support for initializing Kamelet bindings from Camel
JBang (#5969)
b0ca162 is described below
commit b0ca162d2ffed49e640a03df70912864bf6b5642
Author: Otavio Rodolfo Piske <[email protected]>
AuthorDate: Mon Aug 23 11:37:12 2021 +0200
Added support for initializing Kamelet bindings from Camel JBang (#5969)
---
.../modules/ROOT/pages/camel-jbang.adoc | 24 ++++++++++-
.../camel-jbang-main/dist/CamelJBang.java | 50 +++++++++++++++++++++-
.../src/main/jbang/main/CamelJBang.java | 50 +++++++++++++++++++++-
3 files changed, 121 insertions(+), 3 deletions(-)
diff --git a/docs/user-manual/modules/ROOT/pages/camel-jbang.adoc
b/docs/user-manual/modules/ROOT/pages/camel-jbang.adoc
index cb7629a..79b6cc9 100644
--- a/docs/user-manual/modules/ROOT/pages/camel-jbang.adoc
+++ b/docs/user-manual/modules/ROOT/pages/camel-jbang.adoc
@@ -73,7 +73,7 @@ The same behavior also works for all the other search
commands. The table below
[[CamelJBang-Init-Kamets]]
-== Search Init
+== Init Kamelets
The init sub-command can be used to simplify creating Kamelets. Through this
command, it is possible to create new Kamelets through pre-configured
templates. It works in two steps: first it is necessary to bootstrap the
Kamelet by creating a properties file with the parameters necessary to create
the Kamelet. Once the properties file is correctly set, then it is possible to
create a pre-filled Kamelet by processing that properties file.
@@ -100,6 +100,28 @@ Running this command will create a new file in the `work`
directory. The name of
After the file is generated, it may still need to require final adjustments,
such as correctly setting the name, the icon and other requirements for
official Kamelets. Please consult the Kamelet development documentation for
updated details.
+[[CamelJBang-Init-Bindings]]
+== Init Bindings
+
+The init sub-command can also be used to simplify creating Kamelets bindings.
Through this command, it is possible to create new bindings through
pre-configured templates. Use the `--kamelet` option (you can list the
available ones using the search command) to set the Kamelet to generate the
binding for.
+
+To execute this feature run:
+
+[source,bash]
+----
+CamelJBang init binding --destination /path/to/destination/directory/
--kamelet sftp-source
+----
+
+This will create a new sample YAML binding file that can be modified and used
in Camel K.
+
+You can also generate bindings that can be run by CamelJBang or Camel Core,
but setting the `--project` option:
+
+[source,bash]
+----
+CamelJBang init binding --destination /path/to/destination/directory/
--kamelet sftp-source --project core
+----
+
+
[[CamelJBang-Running]]
== Running Routes
diff --git a/dsl/camel-jbang/camel-jbang-main/dist/CamelJBang.java
b/dsl/camel-jbang/camel-jbang-main/dist/CamelJBang.java
index ff013fa..a705685 100755
--- a/dsl/camel-jbang/camel-jbang-main/dist/CamelJBang.java
+++ b/dsl/camel-jbang/camel-jbang-main/dist/CamelJBang.java
@@ -532,7 +532,54 @@ class InitKamelet extends AbstractInitKamelet implements
Callable<Integer> {
return 1;
}
}
+}
+
+@Command(name = "binding", description = "Provide init templates for kamelet
bindings")
+class InitBinding extends AbstractInitKamelet implements Callable<Integer> {
+ @Option(names = { "-h", "--help" }, usageHelp = true, description =
"Display the help and sub-commands")
+ private boolean helpRequested = false;
+
+ @Option(names = { "--base-resource-location" }, defaultValue =
"github:apache", hidden = true,
+ description = "Where to download the resources from (used for
development/testing)")
+ private String baseResourceLocation;
+
+ @Option(names = { "--branch" }, defaultValue = "main", hidden = true,
+ description = "The branch to use when downloading resources from
(used for development/testing)")
+ private String branch;
+
+ @Option(names = { "--destination" }, defaultValue = "work",
+ description = "The destination directory where to download the
files")
+ private String destination;
+
+ @Option(names = { "--kamelet" }, defaultValue = "",
+ description = "The kamelet to create a binding for")
+ private String kamelet;
+ @Option(names = { "--project" }, defaultValue = "camel-k",
+ description = "The project to create a binding for (either camel-k
or core)")
+ private String project;
+
+ private int downloadSample() throws IOException, CamelException {
+ setBranch(branch);
+
+ String resourcePath =
String.format("camel-kamelets:templates/bindings/%s/%s-binding.yaml", project,
kamelet);
+
+ setResourceLocation(baseResourceLocation, resourcePath);
+
+ try {
+ resolveResource(new File(destination));
+ } catch (ResourceAlreadyExists e) {
+ System.err.println(e.getMessage());
+ return 1;
+ }
+
+ return 0;
+ }
+
+ @Override
+ public Integer call() throws Exception {
+ return downloadSample();
+ }
}
@Command(name = "CamelJBang", mixinStandardHelpOptions = true, version =
"CamelJBang 3.12.0-SNAPSHOT",
@@ -553,7 +600,8 @@ public class CamelJBang implements Callable<Integer> {
.addSubcommand("languages", new SearchLanguages())
.addSubcommand("others", new SearchOthers()))
.addSubcommand("init", new CommandLine(new Init())
- .addSubcommand("kamelet", new InitKamelet()));
+ .addSubcommand("kamelet", new InitKamelet())
+ .addSubcommand("binding", new InitBinding()));
int exitCode = commandLine.execute(args);
System.exit(exitCode);
diff --git
a/dsl/camel-jbang/camel-jbang-main/src/main/jbang/main/CamelJBang.java
b/dsl/camel-jbang/camel-jbang-main/src/main/jbang/main/CamelJBang.java
index f1d2989..6e61124 100755
--- a/dsl/camel-jbang/camel-jbang-main/src/main/jbang/main/CamelJBang.java
+++ b/dsl/camel-jbang/camel-jbang-main/src/main/jbang/main/CamelJBang.java
@@ -532,7 +532,54 @@ class InitKamelet extends AbstractInitKamelet implements
Callable<Integer> {
return 1;
}
}
+}
+
+@Command(name = "binding", description = "Provide init templates for kamelet
bindings")
+class InitBinding extends AbstractInitKamelet implements Callable<Integer> {
+ @Option(names = { "-h", "--help" }, usageHelp = true, description =
"Display the help and sub-commands")
+ private boolean helpRequested = false;
+
+ @Option(names = { "--base-resource-location" }, defaultValue =
"github:apache", hidden = true,
+ description = "Where to download the resources from (used for
development/testing)")
+ private String baseResourceLocation;
+
+ @Option(names = { "--branch" }, defaultValue = "main", hidden = true,
+ description = "The branch to use when downloading resources from
(used for development/testing)")
+ private String branch;
+
+ @Option(names = { "--destination" }, defaultValue = "work",
+ description = "The destination directory where to download the
files")
+ private String destination;
+
+ @Option(names = { "--kamelet" }, defaultValue = "",
+ description = "The kamelet to create a binding for")
+ private String kamelet;
+ @Option(names = { "--project" }, defaultValue = "camel-k",
+ description = "The project to create a binding for (either camel-k
or core)")
+ private String project;
+
+ private int downloadSample() throws IOException, CamelException {
+ setBranch(branch);
+
+ String resourcePath =
String.format("camel-kamelets:templates/bindings/%s/%s-binding.yaml", project,
kamelet);
+
+ setResourceLocation(baseResourceLocation, resourcePath);
+
+ try {
+ resolveResource(new File(destination));
+ } catch (ResourceAlreadyExists e) {
+ System.err.println(e.getMessage());
+ return 1;
+ }
+
+ return 0;
+ }
+
+ @Override
+ public Integer call() throws Exception {
+ return downloadSample();
+ }
}
@Command(name = "CamelJBang", mixinStandardHelpOptions = true, version =
"CamelJBang ${camel.jbang.version}",
@@ -553,7 +600,8 @@ public class CamelJBang implements Callable<Integer> {
.addSubcommand("languages", new SearchLanguages())
.addSubcommand("others", new SearchOthers()))
.addSubcommand("init", new CommandLine(new Init())
- .addSubcommand("kamelet", new InitKamelet()));
+ .addSubcommand("kamelet", new InitKamelet())
+ .addSubcommand("binding", new InitBinding()));
int exitCode = commandLine.execute(args);
System.exit(exitCode);