oh-my-bash/completions/homesick.completion.sh

61 lines
1.7 KiB
Bash
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#! bash oh-my-bash.module
# Bash completion script for homesick
#
# The homebrew bash completion script was used as inspiration.
# Originally from https://github.com/liborw/homesick-completion
# https://github.com/liborw/homesick-completion/blob/904d121d1b8f81629f473915a10c9144fdd416dc/homesick_bash_completion.sh
_omb_completion_homesick()
{
local cur=${COMP_WORDS[COMP_CWORD]}
local options="--skip --force --pretend --quiet"
local actions="cd clone commit destroy diff generate help list open pull push rc show_path status symlink track unlink version"
local repos=$(\ls ~/.homesick/repos)
# Subcommand list
if ((COMP_CWORD == 1)); then
COMPREPLY=( $(compgen -W "${options} ${actions}" -- "$cur") )
return
fi
# Find the first non-switch word
local prev_index=1
local prev=${COMP_WORDS[prev_index]}
while [[ $prev == -* ]]; do
((++prev_index))
prev=${COMP_WORDS[prev_index]}
done
# Find the number of non-"--" commands
local num=0
for word in "${COMP_WORDS[@]}"; do
if [[ $word != -* ]]; then
((++num))
fi
done
case $prev in
# Commands that take a castle
cd|commit|destroy|diff|open|pull|push|rc|show_path|status|symlink|unlink)
COMPREPLY=( $(compgen -W "${repos}" -- "$cur") )
return
;;
# Commands that take command
help)
COMPREPLY=( $(compgen -W "${actions}" -- "$cur") )
return
;;
# Track command take file and repo
track)
if ((num == 2)); then
COMPREPLY=( $(compgen -X -f "$cur") )
elif ((num >= 3)); then
COMPREPLY=( $(compgen -W "${repos}" -- "$cur") )
fi
return
;;
esac
}
complete -o bashdefault -o default -F _omb_completion_homesick homesick