From 4b74fbf1b7a2ec3b5b8a91d84a79390b75507867 Mon Sep 17 00:00:00 2001 From: Jan-Jaap Korpershoek Date: Fri, 30 Oct 2020 18:34:23 +0100 Subject: [PATCH] Make mysql completions work with log-in (#7397) Complete databases using credentials specified on the commandline. --- share/completions/mysql.fish | 5 +++-- share/completions/mysqldump.fish | 1 + share/functions/__fish_complete_mysql.fish | 25 ++++++++++++++++++++++ 3 files changed, 29 insertions(+), 2 deletions(-) create mode 100644 share/completions/mysqldump.fish create mode 100644 share/functions/__fish_complete_mysql.fish diff --git a/share/completions/mysql.fish b/share/completions/mysql.fish index 6d26f212d..af66066a6 100644 --- a/share/completions/mysql.fish +++ b/share/completions/mysql.fish @@ -1,3 +1,5 @@ +__fish_complete_mysql mysql + complete -c mysql -f complete -c mysql -s I -s \? -l help -d 'Display a help message' @@ -13,8 +15,7 @@ complete -c mysql -s c -l comments -d 'Preserve comments in statements' complete -c mysql -l skip-comments -d 'Discard comments in statements' complete -c mysql -s C -l compress -d 'Compress all information' complete -c mysql -l connect-timeout -x -d 'Set the number of seconds before connection timeout' -complete -c mysql -s D -l database -x -d 'The database to use' -a '(mysqlshow 2>/dev/null | tail -n +3 | string replace -rf \'\| *(\S*) *\|\' \'$1\')' -complete -c mysql -a '(mysqlshow 2>/dev/null | tail -n +3 | string replace -rf \'\| *(\S*) *\|\' \'$1\')' + complete -c mysql -s \# -l debug -d 'Write a debugging log' complete -c mysql -l debug-check -d 'Print some debugging information' complete -c mysql -s T -l debug-info -d 'Prints debugging information and memory and CPU usage' diff --git a/share/completions/mysqldump.fish b/share/completions/mysqldump.fish new file mode 100644 index 000000000..3b1b7bf9f --- /dev/null +++ b/share/completions/mysqldump.fish @@ -0,0 +1 @@ +__fish_complete_mysql mysqldump diff --git a/share/functions/__fish_complete_mysql.fish b/share/functions/__fish_complete_mysql.fish new file mode 100644 index 000000000..5e9fab55d --- /dev/null +++ b/share/functions/__fish_complete_mysql.fish @@ -0,0 +1,25 @@ +function __fish_mysql_query -a query + argparse -i 'u/user=' 'P/port=' 'h/host=' 'p/password=?' 'S/socket=' -- (commandline -po) + set -l mysql_cmd mysql + for flag in u P h S + if set -q _flag_$flag + set -l flagvar _flag_$flag + set -a mysql_cmd -$flag $$flagvar + end + end + if [ -n "$_flag_p" ] + set -a mysql_cmd -p$_flag_p + end + echo $query | $mysql_cmd 2>/dev/null +end + +function __fish_complete_mysql_databases + __fish_mysql_query 'show databases' +end + +function __fish_complete_mysql + set -l command $argv[1] + + complete -c $command -s D -l database -x -d 'The database to use' -a '(__fish_complete_mysql_databases)' + complete -c $command -a '(__fish_complete_mysql_databases)' +end