blob: f1b9a9b823979edfd4848e77ce9ffa30d0fc23bf (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
|
# mysql(1) completion -*- shell-script -*-
# @since 2.12
_comp_xfunc_mysql_compgen_character_sets()
{
local -a charsets
_comp_expand_glob charsets '/usr/share/m{ariadb,ysql}/charsets/!(Index).xml'
charsets+=(utf8)
charsets=("${charsets[@]##*/}")
charsets=("${charsets[@]%.xml}")
_comp_compgen -U charsets -- -W '"${charsets[@]}"' -X ''
}
# @deprecated 2.12
_mysql_character_sets()
{
_comp_compgen -ax mysql character_sets "$@"
}
_comp_cmd_mysql()
{
local cur prev words cword was_split comp_args
_comp_initialize -s -- "$@" || return
# Prefer `mysqlshow` in the same dir as the command
local pathcmd
pathcmd=$(type -P -- "$1") && local PATH=${pathcmd%/*}:$PATH
local noargopts='!(-*|*[uDhSPeI]*)'
# shellcheck disable=SC2254
case $prev in
--user | -${noargopts}u)
_comp_compgen -- -u
return
;;
--database | -${noargopts}D)
_comp_compgen_split -- "$(mysqlshow 2>/dev/null |
command sed -ne '2d' -e 's/^|.\([^|]*\)|.*/\1/p')"
return
;;
--host | -${noargopts}h)
_comp_compgen_known_hosts -- "$cur"
return
;;
--default-character-set)
_comp_xfunc_mysql_compgen_character_sets
return
;;
--character-sets-dir | --ssl-capath)
_comp_compgen_filedir -d
return
;;
--socket | -${noargopts}S)
_comp_compgen_filedir sock
return
;;
--protocol)
_comp_compgen -- -W 'tcp socket pipe memory'
return
;;
--defaults-file | --defaults-extra-file | --tee)
_comp_compgen_filedir
return
;;
--ssl-ca | --ssl-cert)
_comp_compgen_filedir '@(pem|cer|c?(e)rt)'
return
;;
--ssl-key)
_comp_compgen_filedir '@(pem|key)'
return
;;
--port | --set-variable | --ssl-cipher | --connect_timeout | \
--max_allowed_packet | --prompt | --net_buffer_length | --select_limit | \
--max_join_size | --server-arg | --debug | --delimiter | --execute | --pager | \
-${noargopts}[Pe])
return
;;
--help | --version | -${noargopts}[?IV])
return
;;
esac
[[ $was_split ]] && return
case $cur in
--*)
_comp_compgen_help
_comp_compgen -a -- -W '--skip-comments --skip-ssl'
[[ ${COMPREPLY-} == *= ]] && compopt -o nospace
return
;;
# only complete long options
-)
compopt -o nospace
COMPREPLY=(--)
return
;;
esac
_comp_compgen_split -- "$(mysqlshow 2>/dev/null |
command sed -ne '2d' -e 's/^|.\([^|]*\)|.*/\1/p')"
} &&
complete -F _comp_cmd_mysql mysql
# ex: filetype=sh
|