# 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 | \ # command 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 '--tablespace --template --encoding --host \ --port --username --password --echo --quiet --help --version' \ -- "$cur" ) ) else _pg_databases fi } complete -F _createdb -o 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 '--host --port --username --password \ --interactive --echo --quiet --help --version' -- "$cur" ) ) else _pg_databases fi } complete -F _dropdb -o 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 '--echo-all --no-align --command --dbname \ --echo-queries --echo-hidden --file --field-separator --host \ --html --list --log-file --output --port --pset --quiet \ --record-separator --single-step --single-line --tuples-only \ --table-attr --username --set --version --password --expanded \ --no-psqlrc --single-transaction --help' -- "$cur" ) ) else # return list of available databases _pg_databases fi } complete -F _psql -o 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