diff --git a/completion/README.md b/completion/README.md index 86d5960..0e824bf 100644 --- a/completion/README.md +++ b/completion/README.md @@ -1,19 +1,36 @@ -# Prerequisites - -**yadm** completion only works if Git completions are also enabled. - # Installation -## Homebrew +## bash completions +### Prerequisites +**yadm** completion only works if Git completions are also enabled. +### Homebrew If using `homebrew` to install **yadm**, completions should automatically be handled if you also install `brew install bash-completion`. This might require you to include the main completion script in your own bashrc file like this: - ``` [ -f /usr/local/etc/bash_completion ] && source /usr/local/etc/bash_completion ``` -## Manual installation +### Manual installation Copy the completion script locally, and add this to you bashrc: ``` [ -f /full/path/to/yadm.bash_completion ] && source /full/path/to/yadm.bash_completion ``` + +## zsh completions +### Homebrew +If using `homebrew` to install **yadm**, completions should handled automatically. + +### Manual installation +Copy the completion script `yadm.zsh_completion` locally, rename it to `_yadm`, and add the containing folder to `$fpath` in `.zshrc`: +``` +fpath=(/path/to/folder/containing_yadm $fpath) +autoload -U compinit +compinit +``` + +### Installation using [zplug](https://github.com/b4b4r07/zplug) +Load `_yadm` as a plugin in your `.zshrc`: +``` +fpath=("$ZPLUG_HOME/bin" $fpath) +zplug "TheLocehiliosan/yadm", rename-to:_yadm, use:"completion/yadm.zsh_completion", as:command, defer:2 +``` diff --git a/completion/yadm.zsh_completion b/completion/yadm.zsh_completion new file mode 100644 index 0000000..517d7be --- /dev/null +++ b/completion/yadm.zsh_completion @@ -0,0 +1,46 @@ +#compdef yadm +_yadm(){ + local -a _1st_arguments + _1st_arguments=( + 'help:Display yadm command help' + 'init:Initialize an empty repository' + 'config:Configure a setting' + 'list:List tracked files' + 'alt:Create links for alternates' + 'bootstrap:Execute $HOME/.yadm/bootstrap' + 'encrypt:Encrypt files' + 'decrypt:Decrypt files' + 'perms:Fix perms for private files' + 'add:git add' + 'push:git push' + 'pull:git pull' + 'diff:git diff' + 'checkout:git checkout' + 'co:git co' + 'commit:git commit' + 'ci:git ci' + 'status:git status' + 'st:git st' + 'reset:git reset' + 'log:git log' + ) + + local context state line expl + local -A opt_args + + _arguments '*:: :->subcmds' && return 0 + + if (( CURRENT == 1 )); then + _describe -t commands "yadm commands" _1st_arguments -V1 + return + fi + + case "$words[1]" in + *) + _arguments ':filenames:_files' + ;; + esac + +} + +_yadm "$@"