89 lines
2.6 KiB
Plaintext
89 lines
2.6 KiB
Plaintext
# main function bound to scl command
|
|
_scl()
|
|
{
|
|
local cur actions cur_action collections
|
|
COMPREPLY=()
|
|
|
|
cur="${COMP_WORDS[COMP_CWORD]}"
|
|
actions="enable run load unload list-collections list-packages man register deregister --help"
|
|
|
|
collections=`scl list-collections`
|
|
|
|
# Complete action names
|
|
if ((COMP_CWORD == 1)); then
|
|
COMPREPLY=( $(compgen -W "${actions}" -- ${cur}) )
|
|
return 0;
|
|
fi
|
|
|
|
# If there is command or separator in arguments then stop completition
|
|
if ((COMP_CWORD > 3)); then
|
|
for word in "${COMP_WORDS[@]}"; do
|
|
if [[ ${word} == \'* || ${word} == \"* || ${word} == "--" ]] ; then
|
|
return 0
|
|
fi
|
|
done
|
|
fi
|
|
|
|
# Complete one or none action argument
|
|
if ((COMP_CWORD >= 2)); then
|
|
cur_action="${COMP_WORDS[1]}"
|
|
|
|
case "$cur_action" in
|
|
# No argument
|
|
list-collections|list-enabled|--help)
|
|
return 0
|
|
;;
|
|
|
|
# Argument is collection name
|
|
list-packages|man)
|
|
if ((COMP_CWORD == 2)); then
|
|
COMPREPLY=( $(compgen -W "$collections" -- ${cur}) )
|
|
fi
|
|
return 0
|
|
;;
|
|
|
|
# Argument is collection name or "-f" or "--force"
|
|
deregister)
|
|
if ((COMP_CWORD == 2)); then
|
|
COMPREPLY=( $(compgen -W "$collections --force -f" -- ${cur}))
|
|
fi
|
|
if [ "$COMP_CWORD" -eq 3 -a "(" "${COMP_WORDS[2]}" == "--force" -o "${COMP_WORDS[2]}" == "-f" ")" ]; then
|
|
COMPREPLY=( $(compgen -W "$collections" -- ${cur}))
|
|
fi
|
|
return 0
|
|
;;
|
|
|
|
# Argument is directory
|
|
register)
|
|
compopt -o plusdirs
|
|
if ((COMP_CWORD == 2)); then
|
|
COMPREPLY=( $(compgen -A directory -- ${cur}) )
|
|
fi
|
|
return 0
|
|
;;
|
|
|
|
# Arguments are collections or "-x" or "--exec"
|
|
run|enable)
|
|
if ((COMP_CWORD == 2)); then
|
|
COMPREPLY=( $(compgen -W "$collections -x --exec" -- ${cur}) )
|
|
else
|
|
COMPREPLY=( $(compgen -W "$collections" -- ${cur}) )
|
|
fi
|
|
return 0
|
|
;;
|
|
|
|
# Arguments are collections
|
|
load|unload)
|
|
COMPREPLY=( $(compgen -W "$collections" -- ${cur}) )
|
|
return 0
|
|
;;
|
|
*)
|
|
;;
|
|
esac
|
|
fi
|
|
|
|
}
|
|
|
|
# bind the scl command to the _scl function for completion
|
|
complete -F _scl scl
|