mirror of
git://git.code.sf.net/p/zsh/code
synced 2024-11-19 05:24:23 +01:00
Initial revision
This commit is contained in:
parent
768d5fc7dc
commit
6f06acc5cb
245
Completion/User/_mysql_utils
Normal file
245
Completion/User/_mysql_utils
Normal file
@ -0,0 +1,245 @@
|
||||
#compdef mysql mysqlshow mysqldump mysqladmin
|
||||
#
|
||||
# zsh completion functions for mysql client programs
|
||||
# Adam Spiers <adam@spiers.net>
|
||||
#
|
||||
|
||||
##
|
||||
## Auxiliary functions
|
||||
##
|
||||
|
||||
_mysql_get_identity () {
|
||||
_mysql_user=${opt_args[-u]-$opt_args[--user]}
|
||||
_mysql_port=${opt_args[-P]-$opt_args[--port]}
|
||||
_mysql_host=${opt_args[-h]-$opt_args[--host]}
|
||||
|
||||
_mysql_params=(
|
||||
${_mysql_user+"--user=$_mysql_user"}
|
||||
${_mysql_host+"--host=$_mysql_host"}
|
||||
${_mysql_port+"--port=$_mysql_port"}
|
||||
)
|
||||
}
|
||||
|
||||
_mysql_hosts () {
|
||||
local _mysql_user _mysql_port _mysql_host _mysql_params
|
||||
_mysql_get_identity
|
||||
|
||||
_wanted hosts expl 'server host' &&
|
||||
_combination -s '[:@]' '' hosts-ports-users \
|
||||
${_mysql_user:+users=${_mysql_user:q}} \
|
||||
${_mysql_port:+ports=${_mysql_port:q}} \
|
||||
hosts "$expl[@]"
|
||||
}
|
||||
|
||||
_mysql_ports () {
|
||||
local _mysql_user _mysql_port _mysql_host _mysql_params
|
||||
_mysql_get_identity
|
||||
|
||||
_wanted ports expl 'server port' &&
|
||||
_combination -s '[:@]' '' hosts-ports-users \
|
||||
${_mysql_user:+users=${_mysql_user:q}} \
|
||||
${_mysql_host:+hosts=${_mysql_host:q}} \
|
||||
ports "$expl[@]"
|
||||
}
|
||||
|
||||
_mysql_users () {
|
||||
local _mysql_user _mysql_port _mysql_host _mysql_params
|
||||
_mysql_get_identity
|
||||
|
||||
_wanted users expl 'server username' &&
|
||||
_combination -s '[:@]' '' hosts-ports-users \
|
||||
${_mysql_host:+hosts=${_mysql_host:q}} \
|
||||
${_mysql_port:+ports=${_mysql_port:q}} \
|
||||
users "$expl[@]"
|
||||
}
|
||||
|
||||
_mysql_databases () {
|
||||
local _mysql_user _mysql_port _mysql_host _mysql_params
|
||||
_mysql_get_identity
|
||||
|
||||
local _mysql_databases
|
||||
_mysql_databases=(
|
||||
${(f)~~"$( echo "show databases" |
|
||||
mysql "$_mysql_params[@]" )"}
|
||||
)
|
||||
shift _mysql_databases
|
||||
|
||||
compadd "$expl[@]" - $_mysql_databases
|
||||
}
|
||||
|
||||
_mysql_tables () {
|
||||
local _mysql_user _mysql_port _mysql_host _mysql_params
|
||||
_mysql_get_identity
|
||||
|
||||
local _mysql_tables
|
||||
_mysql_tables=(
|
||||
${(f)~~"$( echo "show tables" |
|
||||
mysql "$_mysql_params[@]" $1 )"}
|
||||
)
|
||||
# remove header
|
||||
shift _mysql_tables
|
||||
|
||||
compadd "$expl[@]" - $_mysql_tables
|
||||
}
|
||||
|
||||
_mysql_variables () {
|
||||
_values -s , 'MySQL client variables' \
|
||||
'max_allowed_packet[maximum allowed packet size]:Packet size in bytes:' \
|
||||
'net_buffer_length[network buffer length]:Buffer length in bytes:'
|
||||
}
|
||||
|
||||
|
||||
##
|
||||
## The actual completion code for the commands
|
||||
##
|
||||
|
||||
_mysql_common_opts=(
|
||||
{-\?,--help}'[display help]'
|
||||
{-S+,--socket=}':server socket file:_files'
|
||||
{-h+,--host=}':server hostname:_mysql_hosts'
|
||||
{-P+,--port=}':server port:_mysql_ports'
|
||||
{-u+,--user=}':server username:_mysql_users'
|
||||
{-p+,--password=}':server password: '
|
||||
{-C,--compress}'[use compression in server/client protocol]'
|
||||
)
|
||||
|
||||
_mysql () {
|
||||
local curcontext="$curcontext" state line expl
|
||||
typeset -A opt_args
|
||||
|
||||
_arguments -C -s \
|
||||
"$_mysql_common_opts[@]" \
|
||||
{-V,--version}'[display client version]' \
|
||||
{-A,--no-auto-rehash}'[no automatic rehashing]' \
|
||||
'(-t --table)'{-B,--batch}'[batch mode (no pretty ASCII)]' \
|
||||
{-T,--debug-info}'[print debug info on exit]' \
|
||||
{-e,--exec-command}':batch-execute specified command and exit: ' \
|
||||
{-f,--force}'[continue through errors]' \
|
||||
{-i,--ignore-space}'[ignore space after function names]' \
|
||||
{-H,--html}'[produce HTML output]' \
|
||||
{-n,--unbuffered}'[flush the buffer after each query]' \
|
||||
{-O,--set-variable=}':set variable:_mysql_variables' \
|
||||
{-o,--one-database}'[only update the default database]' \
|
||||
{-q,--quick}'[disable caching of the result]' \
|
||||
{-r,--raw}'[write fields without conversion]' \
|
||||
{-s,--silent}'[silent mode]' \
|
||||
{-L,--skip-line-numbers}"[don't write line number for errors]" \
|
||||
{-N,--skip-column-names}"[don't write column names in results]" \
|
||||
'(-B --batch)'{-t,--table}'[output in table format]' \
|
||||
{-v,--verbose}'[verbose mode]' \
|
||||
{-E,--vertical}'[print query output vertically]' \
|
||||
{-w,--wait}'[wait and retry server connection if necessary]' \
|
||||
':MySQL database to use:_mysql_databases'
|
||||
}
|
||||
|
||||
_mysqlshow () {
|
||||
local curcontext="$curcontext" state line expl
|
||||
typeset -A opt_args
|
||||
|
||||
_arguments -C -s \
|
||||
"$_mysql_common_opts[@]" \
|
||||
{-V,--version}'[display version]' \
|
||||
{-\#+,--debug=}':debug file: ' \
|
||||
':MySQL database to show:_mysql_databases' \
|
||||
':table to show:{ _mysql_tables "$line[1]" }' \
|
||||
':field wildcard: '
|
||||
}
|
||||
|
||||
_mysqldump () {
|
||||
local curcontext="$curcontext" state line expl
|
||||
typeset -A opt_args
|
||||
|
||||
_arguments -C -s \
|
||||
"$_mysql_common_opts[@]" \
|
||||
{-V,--version}'[display version]' \
|
||||
{-a,--all}'[include all create options]' \
|
||||
{-\#+,--debug=}':debug file: ' \
|
||||
{-c,--complete-insert}'[use complete insert statements]' \
|
||||
{-e,--extended-insert}'[allow new INSERT syntax]' \
|
||||
"--add-drop-table[add a 'drop table' before each create]" \
|
||||
"--add-locks[add locks around insert statements]" \
|
||||
"--allow-keywords[allow creation of column names that are keywords]" \
|
||||
"--delayed[insert rows with INSERT DELAYED]" \
|
||||
{-F,--flush-logs}'[flush logs file in server before dump]' \
|
||||
{-l,--lock-tables}'[lock all tables for read]' \
|
||||
{-t,--no-create-info}"[don't write table creation info]" \
|
||||
{-d,--no-data}"[don't write row information]" \
|
||||
{-O,--set-variable}':set variable:_mysql_variables' \
|
||||
'--opt[create fastest possible dump for reading]' \
|
||||
{-q,--quick}"[don't buffer, dump directly to stdout]" \
|
||||
{-T,--tab=}"[dump tab-separated text files for each table]:directory to store text files:_files -/" \
|
||||
{-w+,--where=}'[dump only selected records]:WHERE clause to limit records to dump: ' \
|
||||
'--fields-terminated-by=:(with --tab) fields in textfile terminated by ...: ' \
|
||||
'--fields-enclosed-by=:(with --tab) fields in import file enclosed by ...: ' \
|
||||
'--fields-optionally-enclosed-by=:(with --tab) fields in import file optionally enclosed by ...: ' \
|
||||
'--fields-escaped-by=:(with --tab) fields in import file escaped by ...: ' \
|
||||
'--lines-terminated-by=:(with --tab) lines in import file terminated by ...: ' \
|
||||
':MySQL database to dump:_mysql_databases' \
|
||||
'*:tables to dump:{ _mysql_tables "$line[1]" }'
|
||||
}
|
||||
|
||||
_mysqladmin () {
|
||||
local curcontext="$curcontext" state line expl
|
||||
typeset -A opt_args
|
||||
|
||||
_arguments -C -s \
|
||||
"$_mysql_common_opts[@]" \
|
||||
{-v,--version}'[display version]' \
|
||||
{-\#+,--debug=}':debug file: ' \
|
||||
{-f,--force}'[continue through errors]' \
|
||||
{-i+,--sleep=}'[repeat commands periodically]:number of seconds between executions: ' \
|
||||
{-s,--silent}"[silently exit if can't connect to server]" \
|
||||
{-t+,--timeout=}'[timeout for connection]' \
|
||||
{-w+,--wait=}'[wait and retry server connection if necessary]:number of retries: ' \
|
||||
'*::admin command:_mysqladmin_commands'
|
||||
}
|
||||
|
||||
_mysqladmin_commands () {
|
||||
local cmds expl
|
||||
cmds=(
|
||||
create drop extended-status
|
||||
flush-{hosts,logs,status,tables,privileges}
|
||||
kill password ping processlist
|
||||
reload refresh shutdown
|
||||
status variables version
|
||||
)
|
||||
|
||||
if (( CURRENT == 1 )); then
|
||||
_tags commands && compadd "$@" $cmds
|
||||
else
|
||||
local curcontext="$curcontext"
|
||||
|
||||
case "$words[1]" in
|
||||
(create)
|
||||
;&
|
||||
(drop)
|
||||
_wanted mysqldbs expl "MySQL databases" && _mysql_databases
|
||||
;;
|
||||
(kill)
|
||||
_message 'thread ids'
|
||||
;;
|
||||
(password)
|
||||
_message 'new password'
|
||||
;;
|
||||
esac
|
||||
fi
|
||||
}
|
||||
|
||||
_mysql_utils () {
|
||||
case "$words[1]" in
|
||||
mysql)
|
||||
_mysql "$@"
|
||||
;;
|
||||
mysqlshow)
|
||||
_mysqlshow "$@"
|
||||
;;
|
||||
mysqldump)
|
||||
_mysqldump "$@"
|
||||
;;
|
||||
mysqladmin)
|
||||
_mysqladmin "$@"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
_mysql_utils "$@"
|
Loading…
Reference in New Issue
Block a user