# mysql(1) completion -*- shell-script -*- proc _mysql { local cur prev words cword split _init_completion -s || return match $prev { with -u|--user setglobal COMPREPLY = ''( $( compgen -u -- "$cur" ) ) return 0 with -D|--database setglobal COMPREPLY = ''( $( compgen -W "$(mysqlshow 2>/dev/null|sed -ne '2d' -e 's/^|.\([^|]*\)|.*/\1/p')" -- "$cur" ) ) return 0 with -h|--host _known_hosts_real $cur return 0 with --default-character-set [[ -d /usr/share/mysql/charsets ]] && \ setglobal COMPREPLY = ''( $( compgen -W "$(command ls /usr/share/mysql/charsets|sed -e '/^\(README\|Index\.xml\)$/d' -e 's/.xml$//') utf8" -- "$cur" ) ) return 0 with --character-sets-dir|--ssl-capath _filedir -d return 0 with -S|--socket _filedir sock return 0 with --protocol setglobal COMPREPLY = ''( $( compgen -W 'tcp socket pipe memory' -- "$cur" ) ) return 0 with --defaults-file|--defaults-extra-file|--tee _filedir return 0 with --default-character-set|-P|--port|--set-variable|\ --ssl-ca|--ssl-cert|--ssl-cipher|--ssl-key|\ --connect_timeout|--max_allowed_packet|--prompt|\ --net_buffer_length|--select_limit|--max_join_size|\ --server-arg|--debug|--delimiter|--execute|-e|--pager # Argument required but no completions available return 0 with '-?'|-I|--help|-V|--version # All other options are noop with these return 0 } match $cur { with --* local help=$[_parse_help $1] setglobal help = '" --skip-comments --skip-ssl'" setglobal COMPREPLY = ''( $( compgen -W "$help" -- "$cur" ) ) [[ $COMPREPLY == *= ]] && compopt -o nospace return 0 # only complete long options with - compopt -o nospace setglobal COMPREPLY = ''( -- ) return 0 } setglobal COMPREPLY = ''( $( compgen -W \ "$(mysqlshow 2>/dev/null|sed -ne '2d' -e 's/^|.\([^|]*\)|.*/\1/p')" \ -- "$cur" ) ) } && complete -F _mysql mysql # ex: ts=4 sw=4 et filetype=sh