mirror of
				git://git.code.sf.net/p/zsh/code
				synced 2025-10-31 06:00:54 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			243 lines
		
	
	
	
		
			7.5 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			243 lines
		
	
	
	
		
			7.5 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| #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 -
 | |
| }
 | |
| 
 | |
| _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 -
 | |
| }
 | |
| 
 | |
| _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 -
 | |
| }
 | |
| 
 | |
| _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[@]" -a _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[@]" -a _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
 | |
|     _wanted commands expl command compadd "$@" -a cmds
 | |
|   else
 | |
|     local curcontext="$curcontext"
 | |
| 
 | |
|     case "${words[1]:t}" 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]:t}" in
 | |
|     mysql)
 | |
|       _mysql "$@"
 | |
|     ;;
 | |
|     mysqlshow)
 | |
|       _mysqlshow "$@"
 | |
|     ;;
 | |
|     mysqldump)
 | |
|       _mysqldump "$@"
 | |
|     ;;
 | |
|     mysqladmin)
 | |
|       _mysqladmin "$@"
 | |
|     ;;
 | |
|   esac
 | |
| }
 | |
| 
 | |
| _mysql_utils "$@"
 |