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 2026/05/06 15:08:43 UTC
(camel) branch wc created (now e34e72ccc4e4)
This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a change to branch wc
in repository https://gitbox.apache.org/repos/asf/camel.git
at e34e72ccc4e4 CAMEL-23438: camel-jbang - Wrapper to install scripts as camel instead of camelw
This branch includes the following new commits:
new e34e72ccc4e4 CAMEL-23438: camel-jbang - Wrapper to install scripts as camel instead of camelw
The 1 revisions listed above as "new" are entirely new to this
repository and will be described in separate emails. The revisions
listed as "add" were already present in the repository and have only
been added to this reference.
(camel) 01/01: CAMEL-23438: camel-jbang - Wrapper to install scripts as camel instead of camelw
Posted by da...@apache.org.
This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch wc
in repository https://gitbox.apache.org/repos/asf/camel.git
commit e34e72ccc4e4d3541e73b2582b7b4aa57c8ecc28
Author: Claus Ibsen <cl...@gmail.com>
AuthorDate: Wed May 6 17:08:30 2026 +0200
CAMEL-23438: camel-jbang - Wrapper to install scripts as camel instead of camelw
---
.../ROOT/pages/camel-4x-upgrade-guide-4_21.adoc | 5 ++++
.../pages/jbang-commands/camel-jbang-wrapper.adoc | 1 +
.../META-INF/camel-jbang-commands-metadata.json | 2 +-
.../dsl/jbang/core/commands/WrapperCommand.java | 24 ++++++++-------
.../jbang/core/commands/WrapperCommandTest.java | 34 ++++++++++++++++++----
5 files changed, 50 insertions(+), 16 deletions(-)
diff --git a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_21.adoc b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_21.adoc
index acfd903d8a75..7e42bfa2cdd4 100644
--- a/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_21.adoc
+++ b/docs/user-manual/modules/ROOT/pages/camel-4x-upgrade-guide-4_21.adoc
@@ -36,6 +36,11 @@ Previously these nodes were flattened to the same level as their parent `choice`
with the tree structure exposed by `getChildren()`. This affects level values reported via JMX (`ManagedProcessor.getLevel()`)
and dev consoles for nodes inside Choice EIP branches.
+=== camel-jbang
+
+The `camel wrapper` command now installs the scripts as `camel` instead of `camelw`.
+You can use the `--command-name=camelw` to use the old name.
+
=== camel-yaml-dsl
A new canonical JSON Schema variant (`camelYamlDsl-canonical.json`) has been added alongside the existing classic
diff --git a/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-wrapper.adoc b/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-wrapper.adoc
index 85299e1738df..403c1efd1ef0 100644
--- a/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-wrapper.adoc
+++ b/docs/user-manual/modules/ROOT/pages/jbang-commands/camel-jbang-wrapper.adoc
@@ -20,6 +20,7 @@ camel wrapper [options]
|===
| Option | Description | Default | Type
| `--camel-version` | Camel version to pin (defaults to current version) | | String
+| `--command-name` | The name of the command to use (camel or camelw) | camel | String
| `--dir,--directory` | Directory where wrapper files will be created | . | String
| `--repo-url` | Maven repository URL for downloading the launcher | DEFAULT_REPO_URL | String
| `-h,--help` | Display the help and sub-commands | | boolean
diff --git a/dsl/camel-jbang/camel-jbang-core/src/generated/resources/META-INF/camel-jbang-commands-metadata.json b/dsl/camel-jbang/camel-jbang-core/src/generated/resources/META-INF/camel-jbang-commands-metadata.json
index 77069a1e6a8b..94f962fd266c 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/generated/resources/META-INF/camel-jbang-commands-metadata.json
+++ b/dsl/camel-jbang/camel-jbang-core/src/generated/resources/META-INF/camel-jbang-commands-metadata.json
@@ -32,6 +32,6 @@
{ "name": "transform", "fullName": "transform", "description": "Transform message or Camel routes", "sourceClass": "org.apache.camel.dsl.jbang.core.commands.TransformCommand", "options": [ { "names": "-h,--help", "description": "Display the help and sub-commands", "javaType": "boolean", "type": "boolean" } ], "subcommands": [ { "name": "dataweave", "fullName": "transform dataweave", "description": "Convert DataWeave scripts to DataSonnet format", "sourceClass": "org.apache.camel.dsl. [...]
{ "name": "update", "fullName": "update", "description": "Update Camel project", "sourceClass": "org.apache.camel.dsl.jbang.core.commands.update.UpdateCommand", "options": [ { "names": "-h,--help", "description": "Display the help and sub-commands", "javaType": "boolean", "type": "boolean" } ], "subcommands": [ { "name": "list", "fullName": "update list", "description": "List available update versions for Camel and its runtime variants", "sourceClass": "org.apache.camel.dsl.jbang.cor [...]
{ "name": "version", "fullName": "version", "description": "Manage Camel versions", "sourceClass": "org.apache.camel.dsl.jbang.core.commands.version.VersionCommand", "options": [ { "names": "-h,--help", "description": "Display the help and sub-commands", "javaType": "boolean", "type": "boolean" } ], "subcommands": [ { "name": "get", "fullName": "version get", "description": "Displays current Camel version", "sourceClass": "org.apache.camel.dsl.jbang.core.commands.version.VersionGet", [...]
- { "name": "wrapper", "fullName": "wrapper", "description": "Install Camel wrapper scripts for version pinning", "sourceClass": "org.apache.camel.dsl.jbang.core.commands.WrapperCommand", "options": [ { "names": "--camel-version", "description": "Camel version to pin (defaults to current version)", "javaType": "java.lang.String", "type": "string" }, { "names": "--dir,--directory", "description": "Directory where wrapper files will be created", "defaultValue": ".", "javaType": "java.lan [...]
+ { "name": "wrapper", "fullName": "wrapper", "description": "Install Camel wrapper scripts for version pinning", "sourceClass": "org.apache.camel.dsl.jbang.core.commands.WrapperCommand", "options": [ { "names": "--camel-version", "description": "Camel version to pin (defaults to current version)", "javaType": "java.lang.String", "type": "string" }, { "names": "--command-name", "description": "The name of the command to use (camel or camelw)", "defaultValue": "camel", "javaType": "java [...]
]
}
diff --git a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/WrapperCommand.java b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/WrapperCommand.java
index b3de36e37c24..32fa077e558a 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/WrapperCommand.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/WrapperCommand.java
@@ -35,7 +35,7 @@ import picocli.CommandLine.Command;
footer = {
"%nExamples:",
" camel wrapper",
- " camel wrapper --camel-version=4.10.0" })
+ " camel wrapper --camel-version=4.18.2" })
public class WrapperCommand extends CamelCommand {
private static final String DEFAULT_REPO_URL = "https://repo1.maven.org/maven2";
@@ -56,6 +56,10 @@ public class WrapperCommand extends CamelCommand {
defaultValue = ".")
String directory = ".";
+ @CommandLine.Option(names = { "--command-name" },
+ description = "The name of the command to use (camel or camelw)", defaultValue = "camel")
+ String commandName = "camel";
+
public WrapperCommand(CamelJBangMain main) {
super(main);
}
@@ -77,18 +81,18 @@ public class WrapperCommand extends CamelCommand {
writeProperties(camelDir);
// Write camelw script
- writeScript(baseDir, "camelw");
+ writeScript(baseDir, "camelw", commandName);
// Write camelw.cmd script
- writeScript(baseDir, "camelw.cmd");
+ writeScript(baseDir, "camelw.cmd", commandName + ".cmd");
printer().println("Apache Camel wrapper installed successfully.");
printer().println(" Camel version: " + camelVersion);
printer().println(" Properties: " + camelDir.resolve(WRAPPER_PROPERTIES_FILE));
- printer().println(" Unix script: " + baseDir.resolve("camelw"));
- printer().println(" Windows script: " + baseDir.resolve("camelw.cmd"));
+ printer().println(" Unix script: " + baseDir.resolve(commandName));
+ printer().println(" Windows script: " + baseDir.resolve(commandName + ".cmd"));
printer().println();
- printer().println("You can now use ./camelw instead of camel to run with the pinned version.");
+ printer().println("You can now use ./" + commandName + " instead of camel to run with the pinned version.");
return 0;
}
@@ -128,18 +132,18 @@ public class WrapperCommand extends CamelCommand {
+ ".jar";
}
- void writeScript(Path baseDir, String scriptName) throws IOException {
- String resourcePath = "camel-wrapper/" + scriptName;
+ void writeScript(Path baseDir, String source, String commandName) throws IOException {
+ String resourcePath = "camel-wrapper/" + source;
try (InputStream is = WrapperCommand.class.getClassLoader().getResourceAsStream(resourcePath)) {
if (is == null) {
throw new IOException("Resource not found: " + resourcePath);
}
String content = IOHelper.loadText(is);
- Path scriptPath = baseDir.resolve(scriptName);
+ Path scriptPath = baseDir.resolve(commandName);
Files.writeString(scriptPath, content);
// Make Unix script executable
- if (!scriptName.endsWith(".cmd")) {
+ if (!commandName.endsWith(".cmd")) {
makeExecutable(scriptPath);
}
}
diff --git a/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/commands/WrapperCommandTest.java b/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/commands/WrapperCommandTest.java
index db832341a168..6f8115b698f0 100644
--- a/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/commands/WrapperCommandTest.java
+++ b/dsl/camel-jbang/camel-jbang-core/src/test/java/org/apache/camel/dsl/jbang/core/commands/WrapperCommandTest.java
@@ -61,8 +61,8 @@ class WrapperCommandTest {
assertEquals(0, exit);
assertTrue(Files.exists(workingDir.resolve(".camel/camel-wrapper.properties")));
- assertTrue(Files.exists(workingDir.resolve("camelw")));
- assertTrue(Files.exists(workingDir.resolve("camelw.cmd")));
+ assertTrue(Files.exists(workingDir.resolve("camel")));
+ assertTrue(Files.exists(workingDir.resolve("camel.cmd")));
}
@Test
@@ -138,11 +138,11 @@ class WrapperCommandTest {
assertEquals(0, exit);
- String camelw = Files.readString(workingDir.resolve("camelw"));
+ String camelw = Files.readString(workingDir.resolve("camel"));
assertTrue(camelw.startsWith("#!/bin/sh"));
assertTrue(camelw.contains("camel-wrapper.properties"));
- String camelwCmd = Files.readString(workingDir.resolve("camelw.cmd"));
+ String camelwCmd = Files.readString(workingDir.resolve("camel.cmd"));
assertTrue(camelwCmd.contains("camel-wrapper.properties"));
}
@@ -176,6 +176,30 @@ class WrapperCommandTest {
String output = printer.getOutput();
assertTrue(output.contains("Apache Camel wrapper installed successfully."));
assertTrue(output.contains("Camel version: 4.10.0"));
- assertTrue(output.contains("camelw"));
+ assertTrue(output.contains("camel"));
}
+
+ @Test
+ void testWrapperCommandName() throws Exception {
+ CamelJBangMain main = new CamelJBangMain();
+ StringPrinter printer = new StringPrinter();
+ main.setOut(printer);
+
+ WrapperCommand cmd = new WrapperCommand(main);
+ cmd.directory = workingDir.toString();
+ cmd.camelVersion = "4.10.0";
+ cmd.commandName = "cheese";
+
+ int exit = cmd.doCall();
+
+ assertEquals(0, exit);
+
+ String camelw = Files.readString(workingDir.resolve("cheese"));
+ assertTrue(camelw.startsWith("#!/bin/sh"));
+ assertTrue(camelw.contains("camel-wrapper.properties"));
+
+ String camelwCmd = Files.readString(workingDir.resolve("cheese.cmd"));
+ assertTrue(camelwCmd.contains("camel-wrapper.properties"));
+ }
+
}