You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Closed-loop application library for Cobra commands
(ready-to-use menus, prompts, completions, and more)
Console is an all-in-one console application library built on top of a readline shell and using Cobra commands.
It aims to provide users with a modern interface at at minimal cost while allowing them to focus on developing
their commands and application core: the console will then transparently interface with these commands, and provide
the various features below almost for free.
Features
Menus & Commands
Bind cobra commands to provide the core functionality.
Multiple menus with their own command tree, prompt engines and special handlers.
All cobra settings can be modified, set and used freely, like in normal CLI workflows.
Bind handlers to special interrupt errors (eg. CtrlC/CtrlD), per menu.
Shell interface
Shell is powered by a readline instance, with full inputrc support and extended functionality.
All features of readline are supported in the console. It also allows the console to give:
Configurable bind keymaps, commands and options, sane defaults, and per-application configuration.
Out-of-the-box, advanced completions for commands, flags, positional and flag arguments.
Provided by readline and carapace: automatic usage & validation command/flags/args hints.
Syntax highlighting for commands (might be extended in the future).
Others
Support for an arbitrary number of history sources, per menu.
Support for oh-my-posh prompts, per menu and with custom configuration files for each.
Also with oh-my-posh, write and bind application/menu-specific prompt segments.
Set of ready-to-use commands (commands/ directory) for readline binds/options manipulation.
Documentation
You can install and use the example application console. This example application
will give you a taste of the behavior and supported features. The following documentation
is also available in the wiki: