CAMEL-23226: Enhance Shell with rich prompt, banner, and auto-suggestions (#22170)

* CAMEL-23226: Migrate Shell to JLine 4 Shell API

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* CAMEL-23226: Add POSIX, interactive, and script commands to JBang shell

Add PosixCommandGroup (cd, ls, grep, cat, head, tail, etc.),
InteractiveCommandGroup (nano, less, ttop), and enable
script/variable commands for a richer shell experience.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* CAMEL-23226: Enhance Shell with alias persistence and init script support

- Add DefaultAliasManager with persistence at ~/.camel-jbang-aliases
  for persistent alias/unalias commands
- Add init script support via ~/.camel-jbang-init file
- Remove scriptCommands(true) which requires a scriptRunner to function

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* CAMEL-23226: Enhance Shell with rich prompt, banner, and auto-suggestions

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* CAMEL-23226: Bump JLine to 4.0.8 for picocli argument completion

JLine 4.0.8 includes jline/jline3#1708 which fixes PicocliCommandRegistry
to use picocli's AutoComplete for proper tab completion of options, option
values, positional parameters, and nested subcommands.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* CAMEL-23226: Restore help colors and completion styling in Shell

- Restore HELP_COLORS variable for colored help output
- Restore OTHERS_GROUP_NAME and COMPLETION_STYLE_GROUP variables
- Use EnvironmentHelper.isColorEnabled() instead of duplicated logic
- Use ShellBuilder import instead of FQCN where possible
- Add TODO for replacing AutosuggestionWidgets with CommandTailTipWidgets
  (needs ShellBuilder to expose CommandDispatcher in onReaderReady callback)

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* CAMEL-23226: Use CommandTailTipWidgets for unified autosuggestion and tooltips

Replace AutosuggestionWidgets with CommandTailTipWidgets which provides
both fish-style autosuggestion AND command description tooltips below
the cursor line. This requires the JLine ShellBuilder.onReaderReady
BiConsumer<LineReader, CommandDispatcher> API enhancement.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

* CAMEL-23226: Bump JLine to 4.0.9

Includes:
- BiConsumer<LineReader, CommandDispatcher> overload for ShellBuilder.onReaderReady
- Deprecated no-op jansi()/jna() on TerminalBuilder for JLine 3 compatibility

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>

---------

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
2 files changed
tree: 3c9a145b1a2f54bd32a5e09f29de94591ef0c575
  1. .github/
  2. .idea/
  3. .mvn/
  4. apache-camel/
  5. archetypes/
  6. bom/
  7. buildingtools/
  8. camel-dependencies/
  9. camel-sbom/
  10. catalog/
  11. components/
  12. core/
  13. coverage/
  14. docs/
  15. dsl/
  16. etc/
  17. parent/
  18. proposals/
  19. test-infra/
  20. tests/
  21. tooling/
  22. .asf.yaml
  23. .gitattributes
  24. .gitignore
  25. .gitmodules
  26. .sdkmanrc
  27. AGENTS.md
  28. CONTRIBUTING.md
  29. doap.rdf
  30. jbang-catalog.json
  31. Jenkinsfile
  32. Jenkinsfile.deploy
  33. Jenkinsfile.jbangtest
  34. KEYS
  35. LICENSE.txt
  36. mvnw
  37. mvnw.cmd
  38. NOTICE.txt
  39. pom.xml
  40. README.md
  41. SECURITY.md
README.md

Apache Camel

Maven Central Javadocs Stack Overflow Chat Twitter

Apache Camel is an Open Source integration framework that empowers you to quickly and easily integrate various systems consuming or producing data.

Introduction

Camel empowers you to define routing and mediation rules in a variety of domain-specific languages (DSL, such as Java, XML, Groovy and YAML). This means you get smart completion of routing rules in your IDE, whether in a Java or XML editor.

Apache Camel uses URIs to enable easier integration with all kinds of transport or messaging model including HTTP, ActiveMQ, JMS, JBI, SCA, MINA or CXF together with working with pluggable Data Format options. Apache Camel is a small library that has minimal dependencies for easy embedding in any Java application. Apache Camel lets you work with the same API regardless of the transport type, making it possible to interact with all the components provided out-of-the-box, with a good understanding of the API.

Apache Camel has powerful Bean Binding and integrated seamlessly with popular frameworks such as Spring, Quarkus, and CDI.

Apache Camel has extensive testing support allowing you to easily unit test your routes.

Components

Apache Camel comes alongside several artifacts with components, data formats, languages, and kinds. The up-to-date list is available online at the Camel website:

Examples

Apache Camel comes with many examples. The up to date list is available online at GitHub:

Getting Started

To help you get started, try the following links:

Getting Started

https://camel.apache.org/getting-started.html

The beginner examples are another powerful alternative pathway for getting started with Apache Camel.

Building

https://camel.apache.org/camel-core/contributing/

Contributions

We welcome all kinds of contributions, the details of which are specified here:

https://github.com/apache/camel/blob/main/CONTRIBUTING.md

Please refer to the website for details of finding the issue tracker, email lists, GitHub, chat

Website: https://camel.apache.org/

GitHub (source): https://github.com/apache/camel

Issue tracker: https://issues.apache.org/jira/projects/CAMEL

Mailing-list: https://camel.apache.org/community/mailing-list/

Chat: https://camel.zulipchat.com/

StackOverflow: https://stackoverflow.com/questions/tagged/apache-camel

Twitter: https://twitter.com/ApacheCamel

Support

For additional help, support, we recommend referencing this page first:

https://camel.apache.org/community/support/

Getting Help

If you get stuck somewhere, please feel free to reach out to us on either StackOverflow, Chat, or the email mailing list.

Please help us make Apache Camel better — we appreciate any feedback you may have.

Enjoy!


The Camel riders!

Licensing

The terms for software licensing are detailed in the LICENSE.txt file,
located in the working directory.