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"));
+    }
+
 }

Reply via email to