Cod is a completion daemon for bash
, fish
, and zsh
.
It detects usage of --help
commands, parses their output, and generates auto-completions for your shell.
You can either download or build the cod
binary for your OS and put it into your $PATH
.
After that, you will need to edit your init script (e.g. ~/.config/fish/config.fish
, ~/.zshrc
, ~/.bashrc
) and add a few lines for the daemon to work correctly.
Add the following to your ~/.bashrc
source <(cod init $$ bash)
Make sure completion system is initialized.
Add the following to your ~/.zshrc
source <(cod init $$ zsh)
Or, you can use a plugin manager like zinit:
zinit wait lucid for \ dim-an/codInitializing zsh completion system
cod
requires initialized completion system. In many cases it is already the case (e.g. if you are using oh-my-zsh or similar framework).
You can check whether your completion system is already initilized by using type compdef
command:
# Completion system IS initialized
$ type compdef
compdef is a shell function from /usr/share/zsh/functions/Completion/compinit
# Completion system IS NOT initialized
$ type compdef
compdef not found
If you found that you need to initialize completion system you can do this by:
compinit
function in your .zshrc
before initializing cod
itself, orcompinstall
command from your shell, it will modify .zshrc
file for you.Also check zsh documentation.
Add the following to ~/.config/fish/config.fish
cod init $fish_pid fish | source
As an alternative, you can also install cod
with Fig in bash
, zsh
, or fish
with just one click.
zsh cod
is known to work with latest version of zsh
(tested: v5.5.1
and 5.7.1
) on macOS and Linux.
bash cod
also works with with latest version of bash
(tested: 4.4.20
and v5.0.11
) on Linux.
Note that default bash
that is bundled with macOS is too old and cod
doesn't support it.
fish cod
works with latest version of fish
(tested: v3.1.2
) on Linux (I didn't have a chance to test it on macOS).
It is recommended that you have at least Go v1.19 installed on your machine
git clone https://github.com/dim-an/cod.git cd cod go build
or
go get -u github.com/dim-an/cod
Cod checks each command you run in the shell. When cod detects usage of --help
flag it asks if you want it to learn this command. If you choose to allow cod to learn this command cod will run command itself parse the output and generate completions based on the --help
output.
Cod performs following checks to decide if command is help invocation:
--help
flag is usedIf cod cannot automatically detect that your command is help invocation you can use learn
subcommand to learn this command anyway.
Cod always uses absolute paths to run programs. (So it finds the binary in $PATH
or resolves relative path if required). Arguments other than the binary path are left unchanged.
The current shell environment and current working directory will be used.
If the program is successfully executed, cod will store: - the absolute path to binary - any used arguments - the working directory - environment variables This info will be used to update command if required (check: cod help update
).
cod
has generic parser that works with most help pages and recognizes flags (starting with -
), while not recognizing subcommands.
It also has a special parser tuned for the python argparse library that recognizes flags and subcommands.
Cod will search for the default config file $XDG_CONFIG_HOME/cod/config.toml
.
The config file allows you to specify rules to either ignore or trust specified binaries
cod example-config
prints an example configuration to stdout.
cod example-config --create
writes an example config to the default directory of said config file ($XDG_CONFIG_HOME/cod/config.toml
)
cod
uses $XDG_DATA_HOME/cod
(default: ~/.local/share/cod
) to store all generated data files.
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4