92 lines
2.2 KiB
Bash
92 lines
2.2 KiB
Bash
# shellcheck shell=bash
|
|
|
|
function _compreply_candidates() {
|
|
local IFS=$'\n'
|
|
|
|
read -d '' -ra COMPREPLY < <(compgen -W "${candidates[*]}" -- "${cur}")
|
|
}
|
|
|
|
function _bash-it-comp() {
|
|
local cur prev verb file_type candidates suffix
|
|
COMPREPLY=()
|
|
cur="${COMP_WORDS[COMP_CWORD]}"
|
|
prev="${COMP_WORDS[COMP_CWORD - 1]}"
|
|
verb="${COMP_WORDS[1]}"
|
|
file_type="${COMP_WORDS[2]:-}"
|
|
candidates=('disable' 'enable' 'help' 'migrate' 'reload' 'restart' 'profile' 'doctor' 'search' 'show' 'update' 'version')
|
|
case "${verb}" in
|
|
show)
|
|
candidates=('aliases' 'completions' 'plugins')
|
|
_compreply_candidates
|
|
;;
|
|
help)
|
|
if [[ "${prev}" == "aliases" ]]; then
|
|
candidates=('all' "$(_bash-it-component-list "${file_type}")")
|
|
_compreply_candidates
|
|
else
|
|
candidates=('aliases' 'completions' 'migrate' 'plugins' 'update')
|
|
_compreply_candidates
|
|
fi
|
|
;;
|
|
profile)
|
|
case "${file_type}" in
|
|
load | rm)
|
|
if [[ "${file_type}" == "$prev" ]]; then
|
|
candidates=("${BASH_IT}/profiles"/*.bash_it)
|
|
candidates=("${candidates[@]##*/}")
|
|
candidates=("${candidates[@]%%.bash_it}")
|
|
|
|
_compreply_candidates
|
|
fi
|
|
;;
|
|
save | list) ;;
|
|
*)
|
|
candidates=('load' 'save' 'list' 'rm')
|
|
_compreply_candidates
|
|
;;
|
|
esac
|
|
;;
|
|
doctor)
|
|
candidates=('errors' 'warnings' 'all')
|
|
_compreply_candidates
|
|
;;
|
|
update)
|
|
if [[ "${cur}" == -* ]]; then
|
|
candidates=('-s' '--silent')
|
|
else
|
|
candidates=('stable' 'dev')
|
|
fi
|
|
_compreply_candidates
|
|
;;
|
|
migrate | reload | restart | search | version) ;;
|
|
enable | disable)
|
|
if [[ "${verb}" == "enable" ]]; then
|
|
suffix="disabled"
|
|
else
|
|
suffix="enabled"
|
|
fi
|
|
case "${file_type}" in
|
|
alias | completion | plugin)
|
|
candidates=('all' "$("_bash-it-component-list-${suffix}" "${file_type}")")
|
|
_compreply_candidates
|
|
;;
|
|
*)
|
|
candidates=('alias' 'completion' 'plugin')
|
|
_compreply_candidates
|
|
;;
|
|
esac
|
|
;;
|
|
*)
|
|
_compreply_candidates
|
|
;;
|
|
esac
|
|
}
|
|
|
|
# Activate completion for bash-it and its common misspellings
|
|
complete -F _bash-it-comp bash-it
|
|
complete -F _bash-it-comp bash-ti
|
|
complete -F _bash-it-comp shit
|
|
complete -F _bash-it-comp bashit
|
|
complete -F _bash-it-comp batshit
|
|
complete -F _bash-it-comp bash_it
|