# bash completion for shellcheck(1) -*- shell-script -*- _shellcheck_optarg() { local args=$("$1" --help 2>&1 | command sed -e 's/,/ /g' -ne 's/^.*'$2'\>.*(\([^)]*\)).*/\1/p') COMPREPLY+=($(compgen -W '$args' -- "$cur")) } _shellcheck() { local cur prev words cword split _init_completion -s || return case $prev in --version | -!(-*)V*) return ;; --exclude | --include | -!(-*)[ei]) return ;; --format | -!(-*)f) local args=$("$1" --format=nonexistent-format /dev/null 2>&1 | command sed -ne '/^Supported formats/,//p' | command sed -ne '/^[[:space:]]/p') COMPREPLY=($(compgen -W '$args' -- "$cur")) return ;; --color | -!(-*)C) _shellcheck_optarg "$1" --color return ;; --shell | -!(-*)s) _shellcheck_optarg "$1" --shell return ;; --enable | -!(-*)o) COMPREPLY=($(compgen -W 'all' -- "$cur")) # TODO others? return ;; --source-path | -!(-*)P) _filedir -d COMPREPLY+=($(compgen -W 'SCRIPTDIR' -- "$cur")) return ;; --wiki-link-count | -!(-*)W) return ;; esac $split && return if [[ $cur == -* ]]; then COMPREPLY=($(compgen -W '$(_parse_help "$1")' -- "$cur")) [[ ${COMPREPLY-} == *= ]] && compopt -o nospace return fi _filedir } && complete -F _shellcheck shellcheck # ex: filetype=sh