A shell-agnostic, declarative specification for CLI autocomplete that works across bash, zsh, fish, and PowerShell.
OpenAutoComplete is a shell-agnostic, declarative specification for CLI autocomplete that allows application developers to define autocompletion once in JSON format, instead of writing separate scripts for each shell like bash, zsh, fish, and PowerShell. It solves the problem of fragmented autocomplete implementations by providing a standardized approach that works across different shells.
CLI application developers who need to provide autocomplete functionality across multiple shells without maintaining separate scripts for each.
Developers choose OpenAutoComplete because it reduces the complexity of autocomplete implementation with a single, declarative JSON specification that is easy to parse and maintain, ensuring compatibility with existing tools and future extensibility.
OpenAutoComplete -- CLI autocomplete specification
Open-Awesome is built by the community, for the community. Submit a project, suggest an awesome list, or help improve the catalog on GitHub.
Defines autocomplete in JSON, eliminating shell scripting and enabling easy parsing with standard tools like jq or ConvertFrom-Json, as highlighted in the standards-based principle.
Designed to work with bash, zsh, fish, and PowerShell, reducing the need for separate scripts per shell, per the shell-agnostic design goal.
Can describe most existing CLI applications without breaking legacy functionality, ensuring adoption with current tools, as stated in the basic principles.
Roadmap includes features like enumerations and delegation, allowing for enhanced capabilities over time, though these are not yet implemented.
Key features such as enumerations for paths or command output parsing are only on the roadmap, limiting current functionality for dynamic autocomplete needs.
Requires shell-specific runtime modules to be developed and adopted, which are not yet widely available, hindering practical use without additional effort.
Developers must learn and adhere to the OAC JSON schema, adding initial complexity compared to familiar, albeit shell-specific, scripting approaches.