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

61 lines
1.7 KiB
Bash
Raw 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