mirror of
				git://git.code.sf.net/p/zsh/code
				synced 2025-11-04 07:21:06 +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 "$service" in
 | 
						|
    mysql)
 | 
						|
      _mysql "$@"
 | 
						|
    ;;
 | 
						|
    mysqlshow)
 | 
						|
      _mysqlshow "$@"
 | 
						|
    ;;
 | 
						|
    mysqldump)
 | 
						|
      _mysqldump "$@"
 | 
						|
    ;;
 | 
						|
    mysqladmin)
 | 
						|
      _mysqladmin "$@"
 | 
						|
    ;;
 | 
						|
  esac
 | 
						|
}
 | 
						|
 | 
						|
_mysql_utils "$@"
 |