36 lines
657 B
Bash
36 lines
657 B
Bash
# shellcheck shell=bash
|
|
|
|
function _getopt() {
|
|
local IFS=$'\n'
|
|
local cur=${COMP_WORDS[COMP_CWORD]}
|
|
local prev=${COMP_WORDS[COMP_CWORD-1]:-}
|
|
|
|
local OPTIONS=('-a' '--alternative'
|
|
'-h' '--help'
|
|
'-l' '--longoptions'
|
|
'-n' '--name'
|
|
'-o' '--options'
|
|
'-q' '--quiet'
|
|
'-Q' '--quiet-output'
|
|
'-s' '--shell'
|
|
'-T' '--test'
|
|
'-u' '--unquoted'
|
|
'-V' '--version')
|
|
|
|
local SHELL_ARGS=('sh' 'bash' 'csh' 'tcsh')
|
|
|
|
case $prev in
|
|
-s | --shell)
|
|
COMPREPLY=("${SHELL_ARGS[@]}")
|
|
;;
|
|
-n | --name)
|
|
read -d '' -ra COMPREPLY < <(compgen -A function -- "$cur")
|
|
;;
|
|
*)
|
|
COMPREPLY=("${OPTIONS[@]}")
|
|
;;
|
|
esac
|
|
}
|
|
|
|
complete -F _getopt -X '!&*' getopt
|