84 lines
2.8 KiB
Bash
84 lines
2.8 KiB
Bash
#!/bin/bash
|
|
# bash_completion for kerl
|
|
|
|
_kerl()
|
|
{
|
|
local cur prev
|
|
if type _get_comp_words_by_ref &>/dev/null ; then
|
|
_get_comp_words_by_ref cur prev
|
|
else
|
|
cur=$2 prev=$3
|
|
fi
|
|
|
|
case $prev in
|
|
kerl)
|
|
mapfile -t COMPREPLY < <( compgen -W 'build install update list delete active path status' -- "$cur" )
|
|
;;
|
|
list)
|
|
mapfile -t COMPREPLY < <( compgen -W 'releases builds installations' -- "$cur" )
|
|
;;
|
|
build)
|
|
if [ "$COMP_CWORD" -eq 2 ]; then
|
|
if [ -f "$HOME"/.kerl/otp_releases ]; then
|
|
RELEASES=$(cat "$HOME"/.kerl/otp_releases)
|
|
fi
|
|
mapfile -t COMPREPLY < <( compgen -W "git $RELEASES" -- "$cur")
|
|
else
|
|
if [ -f "$HOME"/.kerl/otp_builds ]; then
|
|
BUILDS=$(cut -d ',' -f 2 "$HOME"/.kerl/otp_builds)
|
|
fi
|
|
mapfile -t COMPREPLY < <( compgen -W "$BUILDS" -- "$cur")
|
|
fi
|
|
;;
|
|
installation)
|
|
if [ -f "$HOME"/.kerl/otp_installations ]; then
|
|
PATHS=$(cut -d ' ' -f 2 "$HOME"/.kerl/otp_installations)
|
|
fi
|
|
mapfile -t COMPREPLY < <( compgen -W "$PATHS" -- "$cur")
|
|
;;
|
|
install)
|
|
if [ -f "$HOME"/.kerl/otp_builds ]; then
|
|
BUILDS=$(cut -d ',' -f 2 "$HOME"/.kerl/otp_builds)
|
|
fi
|
|
mapfile -t COMPREPLY < <( compgen -W "$BUILDS" -- "$cur")
|
|
;;
|
|
path)
|
|
INSTALL_LIST="$HOME"/.kerl/otp_installations
|
|
if [ -f "$INSTALL_LIST" ]; then
|
|
NAMES=$(cut -d ' ' -f 2 "$INSTALL_LIST" | xargs basename)
|
|
fi
|
|
mapfile -t COMPREPLY < <( compgen -W "$NAMES" -- "$cur")
|
|
;;
|
|
deploy)
|
|
if [ "$COMP_CWORD" -eq 3 ]; then
|
|
if [ -f "$HOME"/.kerl/otp_installations ]; then
|
|
PATHS=$(cut -d ' ' -f 2 "$HOME"/.kerl/otp_installations)
|
|
fi
|
|
fi
|
|
mapfile -t COMPREPLY < <( compgen -W "$PATHS" -- "$cur")
|
|
;;
|
|
delete)
|
|
mapfile -t COMPREPLY < <( compgen -W 'build installation' -- "$cur")
|
|
;;
|
|
update)
|
|
mapfile -t COMPREPLY < <( compgen -W 'releases' -- "$cur")
|
|
;;
|
|
*)
|
|
if [ "$COMP_CWORD" -eq 3 ]; then
|
|
if [ -f "$HOME"/.kerl/otp_builds ]; then
|
|
BUILDS=$(cut -d ',' -f 2 "$HOME"/.kerl/otp_builds)
|
|
fi
|
|
if [ -n "$BUILDS" ]; then
|
|
for b in $BUILDS; do
|
|
if [ "$prev" = "$b" ]; then
|
|
_filedir
|
|
return 0
|
|
fi
|
|
done
|
|
fi
|
|
fi
|
|
;;
|
|
esac
|
|
}
|
|
complete -F _kerl kerl
|