mirror of
https://github.com/ohmybash/oh-my-bash.git
synced 2024-05-11 05:55:37 +00:00
* OMB - Major Refactor - Aliases and completions now works like plugins (need to enabled in .bashrc) - Removed the compatible check in spectrum.sh, OMB now works with Bash v3.x like the old days. - Removed core plugin, added those bash functions into base.sh and load during startup. - Updated OSH template for new installations - Added history config and few other stuff from #17 @TODO: Added a shell script to update old version of .bashrc to new one. * Fixed ShellCheck issues * Fixed ShellCheck issues
61 lines
1.7 KiB
Bash
61 lines
1.7 KiB
Bash
# Bash completion script for homesick
|
||
#
|
||
# The homebrew bash completion script was used as inspiration.
|
||
# Originally from https://github.com/liborw/homesick-completion
|
||
|
||
_homesick_complete()
|
||
{
|
||
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
|
||
[[ ${COMP_CWORD} -eq 1 ]] && {
|
||
COMPREPLY=( $(compgen -W "${options} ${actions}" -- ${cur}) )
|
||
return
|
||
}
|
||
|
||
# Find the first non-switch word
|
||
local prev_index=1
|
||
local prev="${COMP_WORDS[prev_index]}"
|
||
while [[ $prev == -* ]]; do
|
||
prev_index=$((++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=$((++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" -eq 2 ]]; then
|
||
COMPREPLY=( $(compgen -X -f ${cur}) )
|
||
elif [[ "$num" -ge 3 ]]; then
|
||
COMPREPLY=( $(compgen -W "${repos}" -- ${cur}) )
|
||
fi
|
||
return
|
||
;;
|
||
esac
|
||
}
|
||
|
||
complete -o bashdefault -o default -F _homesick_complete homesick
|
||
|