Merge pull request #224 from soraxas/master
This commit is contained in:
commit
5f2c84a633
2 changed files with 81 additions and 0 deletions
|
@ -34,3 +34,7 @@ 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
|
||||
```
|
||||
|
||||
## Fish completions
|
||||
### Manual installation
|
||||
Copy the completion script `yadm.fish_completion` locally, rename it to `yadm.fish`, and add it to any folder within `$fish_complete_path`. For example, for local installation, you can copy it to `$HOME/.config/fish/completions/` and it will be loaded when `yadm` is invoked.
|
||||
|
|
77
completion/yadm.fish_completion
Normal file
77
completion/yadm.fish_completion
Normal file
|
@ -0,0 +1,77 @@
|
|||
#!/usr/bin/fish
|
||||
|
||||
function __fish_yadm_universial_optspecs
|
||||
string join \n 'a-yadm-dir=' 'b-yadm-repo=' 'c-yadm-config=' \
|
||||
'd-yadm-encrypt=' 'e-yadm-archive=' 'f-yadm-bootstrap='
|
||||
end
|
||||
|
||||
function __fish_yadm_needs_command
|
||||
# Figure out if the current invocation already has a command.
|
||||
set -l cmd (commandline -opc)
|
||||
set -e cmd[1]
|
||||
argparse -s (__fish_yadm_universial_optspecs) -- $cmd 2>/dev/null
|
||||
or return 0
|
||||
if set -q argv[1]
|
||||
echo $argv[1]
|
||||
return 1
|
||||
end
|
||||
return 0
|
||||
end
|
||||
|
||||
function __fish_yadm_using_command
|
||||
set -l cmd (__fish_yadm_needs_command)
|
||||
test -z "$cmd"
|
||||
and return 1
|
||||
contains -- $cmd $argv
|
||||
and return 0
|
||||
end
|
||||
|
||||
# yadm's specific autocomplete
|
||||
complete -x -c yadm -n '__fish_yadm_needs_command' -a 'clone' -d 'Clone an existing repository'
|
||||
complete -F -c yadm -n '__fish_yadm_using_command clone' -s w -d 'work-tree to use (default: $HOME)'
|
||||
complete -f -c yadm -n '__fish_yadm_using_command clone' -s b -d 'branch to clone'
|
||||
complete -x -c yadm -n '__fish_yadm_using_command clone' -s f -d 'force to overwrite'
|
||||
complete -x -c yadm -n '__fish_yadm_using_command clone' -l bootstrap -d 'force bootstrap to run'
|
||||
complete -x -c yadm -n '__fish_yadm_using_command clone' -l no-bootstrap -d 'prevent bootstrap from beingrun'
|
||||
|
||||
complete -x -c yadm -n '__fish_yadm_needs_command' -a 'alt' -d 'Create links for alternates'
|
||||
complete -x -c yadm -n '__fish_yadm_needs_command' -a 'bootstrap' -d 'Execute $HOME/.config/yadm/bootstrap'
|
||||
complete -x -c yadm -n '__fish_yadm_needs_command' -a 'perms' -d 'Fix perms for private files'
|
||||
complete -x -c yadm -n '__fish_yadm_needs_command' -a 'enter' -d 'Run sub-shell with GIT variables set'
|
||||
complete -c yadm -n '__fish_yadm_needs_command' -a 'git-crypt' -d 'Run git-crypt commands for the yadm repo'
|
||||
complete -x -c yadm -n '__fish_yadm_needs_command' -a 'help' -d 'Print a summary of yadm commands'
|
||||
complete -x -c yadm -n '__fish_yadm_needs_command' -a 'upgrade' -d 'Upgrade to version 2 of yadm directory structure'
|
||||
complete -x -c yadm -n '__fish_yadm_needs_command' -a 'version' -d 'Print the version of yadm'
|
||||
|
||||
complete -x -c yadm -n '__fish_yadm_needs_command' -a 'init' -d 'Initialize an empty repository'
|
||||
complete -x -c yadm -n '__fish_yadm_using_command init' -s f -d 'force to overwrite'
|
||||
complete -F -c yadm -n '__fish_yadm_using_command init' -s w -d 'set work-tree (default: $HOME)'
|
||||
|
||||
complete -x -c yadm -n '__fish_yadm_needs_command' -a 'list' -d 'List tracked files at current directory'
|
||||
complete -x -c yadm -n '__fish_yadm_using_command list' -s a -d 'list all managed files instead'
|
||||
|
||||
complete -x -c yadm -n '__fish_yadm_needs_command' -a 'encrypt' -d 'Encrypt files'
|
||||
complete -x -c yadm -n '__fish_yadm_needs_command' -a 'decrypt' -d 'Decrypt files'
|
||||
complete -x -c yadm -n '__fish_yadm_using_command decrypt' -s l -d 'list the files stored without extracting'
|
||||
|
||||
complete -x -c yadm -n '__fish_yadm_needs_command' -a 'introspect' -d 'Report internal yadm data'
|
||||
complete -x -c yadm -n '__fish_yadm_using_command introspect' -a (printf -- '%s\n' 'commands configs repo switches') -d 'category'
|
||||
|
||||
complete -x -c yadm -n '__fish_yadm_needs_command' -a 'gitconfig' -d 'Pass options to the git config command'
|
||||
complete -x -c yadm -n '__fish_yadm_needs_command' -a 'config' -d 'Configure a setting'
|
||||
for name in (yadm introspect configs)
|
||||
complete -x -c yadm -n '__fish_yadm_using_command config' -a '$name' -d 'yadm config'
|
||||
end
|
||||
|
||||
# yadm universial options
|
||||
complete --force-files -c yadm -s Y -l yadm-dir -d 'Override location of yadm directory'
|
||||
complete --force-files -c yadm -l yadm-repo -d 'Override location of yadm repository'
|
||||
complete --force-files -c yadm -l yadm-config -d 'Override location of yadm configuration file'
|
||||
complete --force-files -c yadm -l yadm-encrypt -d 'Override location of yadm encryption configuration'
|
||||
complete --force-files -c yadm -l yadm-archive -d 'Override location of yadm encrypted files archive'
|
||||
complete --force-files -c yadm -l yadm-bootstrap -d 'Override location of yadm bootstrap program'
|
||||
|
||||
# wraps git's autocomplete
|
||||
set -l GIT_DIR (yadm introspect repo)
|
||||
# setup the correct git-dir by appending it to git's argunment
|
||||
complete -c yadm -w "git --git-dir=$GIT_DIR"
|
Loading…
Reference in a new issue