/bash_completion.d/postgresql
http://github.com/brinkman83/bashrc · #! · 171 lines · 150 code · 21 blank · 0 comment · 0 complexity · 7705b24b6fa63ce573c485d7cd1e13ff MD5 · raw file
- # bash completion for Postgresql
- have psql && {
- _pg_databases()
- {
- return # See https://launchpad.net/bugs/164772
- COMPREPLY=( $( compgen -W "$( psql -l 2>/dev/null | \
- sed -e '1,/^-/d' -e '/^(/,$d' | \
- awk '{print $1}' )" -- "$cur" ) )
- }
- _pg_users()
- {
- # See https://launchpad.net/bugs/164772
- #COMPREPLY=( $( psql -qtc 'select usename from pg_user' template1 2>/dev/null | \
- # grep "^ $cur" ) )
- #[ ${#COMPREPLY[@]} -eq 0 ] && COMPREPLY=( $( compgen -u -- $cur ) )
- COMPREPLY=( $( compgen -u -- "$cur" ) )
- }
- # createdb(1) completion
- #
- _createdb()
- {
- local cur prev split=false
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
- _split_longopt && split=true
- case "$prev" in
- -h|--host)
- _known_hosts_real "$cur"
- return 0
- ;;
- -U|--username|-O|--owner)
- _pg_users
- return 0
- ;;
- -p|--port|-D|--tablespace|-E|--encoding|-T|--template)
- # argument required but no completions available
- return 0
- ;;
- --help|--version)
- # all other arguments are noop with these
- return 0
- ;;
- esac
- $split && return 0
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-D -T -E -h -p -U -W -e -q \
- --tablespace --template --encoding --host --port \
- --username --password --echo --quiet --help --version' -- "$cur" ))
- else
- _pg_databases
- fi
- }
- complete -F _createdb $default createdb
- # dropdb(1) completion
- #
- _dropdb()
- {
- local cur prev split=false
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
- _split_longopt && split=true
- case "$prev" in
- -h|--host)
- _known_hosts_real "$cur"
- return 0
- ;;
- -U|--username)
- _pg_users
- return 0
- ;;
- --help|--version)
- # all other arguments are noop with these
- return 0
- ;;
- esac
- $split && return 0
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-h -p -U -W -i -e -q \
- --host --port --username --password --interactive \
- --echo --quiet --help --version' -- "$cur" ) )
- else
- _pg_databases
- fi
- }
- complete -F _dropdb $default dropdb
- # psql(1) completion
- #
- _psql()
- {
- local cur prev split=false
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
- _split_longopt && split=true
- case "$prev" in
- -h|--host)
- _known_hosts_real "$cur"
- return 0
- ;;
- -U|--username)
- _pg_users
- return 0
- ;;
- -d|--dbname)
- _pg_databases
- return 0
- ;;
- -o|--output|-f|--file|-L|--log-file)
- _filedir
- return 0
- ;;
- -c|--command|-F|--field-separator|-p|--port|-P|--pset|\
- -R|--record-separator|-T|--table-attr|-v|--set|--variable)
- # argument required but no completions available
- return 0
- ;;
- -\?|--help|-V|--version)
- # all other arguments are noop with these
- return 0
- ;;
- esac
- $split && return 0
- if [[ "$cur" == -* ]]; then
- # return list of available options
- COMPREPLY=( $( compgen -W '-a --echo-all -A --no-align \
- -c --command -d --dbname -e --echo-queries \
- -E --echo-hidden -f --file -F --field-separator \
- -h --host -H --html -l --list -L --log-file -n \
- -o --output -p --port -P --pset -q --quiet \
- -R --record-separator -s --single-step \
- -S --single-line -t --tuples-only -T --table-attr \
- -U --username -v --set --variable -V --version \
- -W --password -x --expanded -X --no-psqlrc \
- -1 --single-transaction -? --help' -- "$cur" ) )
- else
- # return list of available databases
- _pg_databases
- fi
- }
- complete -F _psql $filenames psql
- }
- # Local variables:
- # mode: shell-script
- # sh-basic-offset: 4
- # sh-indent-comment: t
- # indent-tabs-mode: nil
- # End:
- # ex: ts=4 sw=4 et filetype=sh