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 f2a22b51b711 CAMEL-23438: camel-jbang - Wrapper to install scripts as
camel instead of camelw (#23016)
f2a22b51b711 is described below
commit f2a22b51b7112676037ba3e0b1e5cef60e7621ce
Author: Claus Ibsen <[email protected]>
AuthorDate: Wed May 6 19:16:25 2026 +0200
CAMEL-23438: camel-jbang - Wrapper to install scripts as camel instead of
camelw (#23016)
---
.../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"));
+ }
+
}