mirror of
https://github.com/Gator96100/ProxSpace.git
synced 2025-07-29 19:18:36 -07:00
188 lines
4.2 KiB
Bash
188 lines
4.2 KiB
Bash
# bash completion for Postgresql -*- shell-script -*-
|
|
|
|
_pg_databases()
|
|
{
|
|
# -w was introduced in 8.4, https://launchpad.net/bugs/164772
|
|
# "Access privileges" in output may contain linefeeds, hence the NF > 1
|
|
COMPREPLY=( $(compgen -W "$(psql -XAtqwlF $'\t' 2>/dev/null | \
|
|
awk 'NF > 1 { print $1 }')" -- "$cur") )
|
|
}
|
|
|
|
_pg_users()
|
|
{
|
|
# -w was introduced in 8.4, https://launchpad.net/bugs/164772
|
|
COMPREPLY=( $(compgen -W "$(psql -XAtqwc 'select usename from pg_user' \
|
|
template1 2>/dev/null)" -- "$cur") )
|
|
[[ ${#COMPREPLY[@]} -eq 0 ]] && COMPREPLY=( $(compgen -u -- "$cur") )
|
|
}
|
|
|
|
# createdb(1) completion
|
|
#
|
|
_createdb()
|
|
{
|
|
local cur prev words cword split
|
|
_init_completion -s || return
|
|
|
|
case $prev in
|
|
--host|-!(-*)h)
|
|
_known_hosts_real -- "$cur"
|
|
return
|
|
;;
|
|
--username|--owner|-!(-*)[UO])
|
|
_pg_users
|
|
return
|
|
;;
|
|
--help|--version|--port|--tablespace|--encoding|--template|-!(-*)[pDET])
|
|
return
|
|
;;
|
|
esac
|
|
|
|
$split && return
|
|
|
|
if [[ "$cur" == -* ]]; then
|
|
COMPREPLY=( $(compgen -W '$(_parse_help "$1")' -- "$cur") )
|
|
[[ $COMPREPLY == *= ]] && compopt -o nospace
|
|
else
|
|
_pg_databases
|
|
fi
|
|
} &&
|
|
complete -F _createdb createdb
|
|
|
|
# createuser(1) completion
|
|
#
|
|
_createuser()
|
|
{
|
|
local cur prev words cword split
|
|
_init_completion -s || return
|
|
|
|
case $prev in
|
|
--help|--version|--port|--connection-limit|-!(-*)[pc])
|
|
return
|
|
;;
|
|
--host|-!(-*)h)
|
|
_known_hosts_real -- "$cur"
|
|
return
|
|
;;
|
|
--username|-!(-*)U)
|
|
_pg_users
|
|
return
|
|
;;
|
|
esac
|
|
|
|
$split && return
|
|
|
|
if [[ "$cur" == -* ]]; then
|
|
COMPREPLY=( $(compgen -W '$(_parse_help "$1")' -- "$cur") )
|
|
[[ $COMPREPLY == *= ]] && compopt -o nospace
|
|
fi
|
|
} &&
|
|
complete -F _createuser createuser
|
|
|
|
# dropdb(1) completion
|
|
#
|
|
_dropdb()
|
|
{
|
|
local cur prev words cword split
|
|
_init_completion -s || return
|
|
|
|
case $prev in
|
|
--host|-!(-*)h)
|
|
_known_hosts_real -- "$cur"
|
|
return
|
|
;;
|
|
--username|-!(-*)U)
|
|
_pg_users
|
|
return
|
|
;;
|
|
--help|--version)
|
|
return
|
|
;;
|
|
esac
|
|
|
|
$split && return
|
|
|
|
if [[ "$cur" == -* ]]; then
|
|
COMPREPLY=( $(compgen -W '$(_parse_help "$1")' -- "$cur") )
|
|
[[ $COMPREPLY == *= ]] && compopt -o nospace
|
|
else
|
|
_pg_databases
|
|
fi
|
|
} &&
|
|
complete -F _dropdb dropdb
|
|
|
|
# dropuser(1) completion
|
|
#
|
|
_dropuser()
|
|
{
|
|
local cur prev words cword split
|
|
_init_completion -s || return
|
|
|
|
case $prev in
|
|
--help|--version|--port|-!(-*)p)
|
|
return
|
|
;;
|
|
--host|-!(-*)h)
|
|
_known_hosts_real -- "$cur"
|
|
return
|
|
;;
|
|
--username|-!(-*)U)
|
|
_pg_users
|
|
return
|
|
;;
|
|
esac
|
|
|
|
$split && return
|
|
|
|
if [[ "$cur" == -* ]]; then
|
|
COMPREPLY=( $(compgen -W '$(_parse_help "$1")' -- "$cur") )
|
|
[[ $COMPREPLY == *= ]] && compopt -o nospace
|
|
else
|
|
_pg_users
|
|
fi
|
|
} &&
|
|
complete -F _dropuser dropuser
|
|
|
|
# psql(1) completion
|
|
#
|
|
_psql()
|
|
{
|
|
local cur prev words cword split
|
|
_init_completion -s || return
|
|
|
|
case $prev in
|
|
--host|-!(-*)h)
|
|
_known_hosts_real -- "$cur"
|
|
return
|
|
;;
|
|
--username|-!(-*)U)
|
|
_pg_users
|
|
return
|
|
;;
|
|
--dbname|-!(-*)d)
|
|
_pg_databases
|
|
return
|
|
;;
|
|
--output|--file|--log-file|-!(-*)[ofL])
|
|
_filedir
|
|
return
|
|
;;
|
|
--help|--version|--command|--field-separator|--port|--pset|\
|
|
--record-separator|--table-attr|--set|--variable|-!(-*)[?VcFpPRTv])
|
|
return
|
|
;;
|
|
esac
|
|
|
|
$split && return
|
|
|
|
if [[ "$cur" == -* ]]; then
|
|
# return list of available options
|
|
COMPREPLY=( $(compgen -W '$(_parse_help "$1")' -- "$cur") )
|
|
[[ $COMPREPLY == *= ]] && compopt -o nospace
|
|
else
|
|
# return list of available databases
|
|
_pg_databases
|
|
fi
|
|
} &&
|
|
complete -F _psql psql
|
|
|
|
# ex: filetype=sh
|