With the picocli-to-aesh migration (#2453), jbang already depends on aesh's terminal-api module. The terminal-tty module from aesh-readline provides the same terminal capabilities that jline is currently used for.
Current jline usage
jline is used in 3 files for the interactive deps search TUI:
Deps.java -- Terminal + TerminalBuilder for system terminal creation
ArtifactSearchWidget.java -- Terminal, AttributedString, AttributedStyle, Capability for styled interactive search UI
ComboBox.java -- BindingReader, KeyMap, Terminal, AttributedString, Capability for interactive combobox with key bindings
aesh-readline equivalents
| jline |
aesh-readline |
Terminal / TerminalBuilder |
Connection / PosixSysTerminal / WinSysTerminal (terminal-tty) |
AttributedString / AttributedStyle |
TerminalString / TerminalColor / TerminalTextStyle (terminal-api) |
InfoCmp.Capability |
Capability (terminal-api) |
BindingReader / KeyMap |
Key (terminal-api) + readline action mappings |
Signal |
Signal (terminal-api) |
Attributes |
Attributes (terminal-api) |
Benefits
- Remove jline dependency (jline-console-ui, jline-terminal-jni, and their transitives)
- Reduce jar size
- Single terminal framework instead of two
- Better native image support (aesh-readline is designed for it)
Dependencies to add
implementation 'org.aesh:terminal-tty:3.8' // or whatever version matches
Dependencies to remove
implementation "org.jline:jline-console-ui:$jlineVersion"
implementation "org.jline:jline-terminal-jni:$jlineVersion"
With the picocli-to-aesh migration (#2453), jbang already depends on aesh's
terminal-apimodule. Theterminal-ttymodule from aesh-readline provides the same terminal capabilities that jline is currently used for.Current jline usage
jline is used in 3 files for the interactive
deps searchTUI:Deps.java--Terminal+TerminalBuilderfor system terminal creationArtifactSearchWidget.java--Terminal,AttributedString,AttributedStyle,Capabilityfor styled interactive search UIComboBox.java--BindingReader,KeyMap,Terminal,AttributedString,Capabilityfor interactive combobox with key bindingsaesh-readline equivalents
Terminal/TerminalBuilderConnection/PosixSysTerminal/WinSysTerminal(terminal-tty)AttributedString/AttributedStyleTerminalString/TerminalColor/TerminalTextStyle(terminal-api)InfoCmp.CapabilityCapability(terminal-api)BindingReader/KeyMapKey(terminal-api) + readline action mappingsSignalSignal(terminal-api)AttributesAttributes(terminal-api)Benefits
Dependencies to add
Dependencies to remove