home *** CD-ROM | disk | FTP | other *** search
- # 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=()
- _get_comp_words_by_ref cur prev
-
- _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=()
- _get_comp_words_by_ref cur prev
-
- _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=()
- _get_comp_words_by_ref cur prev
-
- _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
-