*** /etc/bash_completion.d/pacman 2010-01-17 13:24:14.313731200 +0100 --- /etc/bash_completion.d/pacman.new 2010-01-17 13:21:22.503331820 +0100 *************** *** 33,42 **** COMPREPLY=( $( compgen -W "$(grep '\[' /etc/pacman.conf | grep -v -e 'options' -e '^#' | tr -d '[]' )" -- $cur ) ) } _installed_pkgs () { local installed_pkgs ! installed_pkgs=$( ls /var/lib/pacman/db/local/ ) COMPREPLY=( $( compgen -W "$( for i in $installed_pkgs; do echo ${i%-*-*}; done )" -- $cur ) ) } --- 33,48 ---- COMPREPLY=( $( compgen -W "$(grep '\[' /etc/pacman.conf | grep -v -e 'options' -e '^#' | tr -d '[]' )" -- $cur ) ) } + get_dbpath () + { + DBPATH=`grep -e ^DBPath[[:space:]]*= "/etc/pacman.conf" | awk -F'=' '{ gsub(/^[ \t]+/, "", $2); print $2 }'` + DBPATH=${DBPATH%/} + } + _installed_pkgs () { local installed_pkgs ! installed_pkgs=$( ls $DBPATH/local/ ) COMPREPLY=( $( compgen -W "$( for i in $installed_pkgs; do echo ${i%-*-*}; done )" -- $cur ) ) } *************** *** 48,61 **** local available_pkgs local enabled_repos enabled_repos=$( grep '\[' /etc/pacman.conf | grep -v -e 'options' -e '^#' | tr -d '[]' ) ! available_pkgs=$( for r in $enabled_repos; do echo /var/lib/pacman/db/sync/$r/*; done ) COMPREPLY=( $( compgen -W "$( for i in $available_pkgs; do j=${i##*/}; echo ${j%-*-*}; done )" -- $cur ) ) } _installed_groups () { local installed_groups ! installed_groups=$( find /var/lib/pacman/db/local -name desc -exec sed -ne '/%GROUPS%/,/^$/{//d; p}' {} \; | sort -u ) COMPREPLY=( $( compgen -W "$( for i in $installed_groups; do echo ${i%-*-*}; done )" -- $cur ) ) } --- 54,67 ---- local available_pkgs local enabled_repos enabled_repos=$( grep '\[' /etc/pacman.conf | grep -v -e 'options' -e '^#' | tr -d '[]' ) ! available_pkgs=$( for r in $enabled_repos; do echo $DBPATH/sync/$r/*; done ) COMPREPLY=( $( compgen -W "$( for i in $available_pkgs; do j=${i##*/}; echo ${j%-*-*}; done )" -- $cur ) ) } _installed_groups () { local installed_groups ! installed_groups=$( find $DBPATH/local -name desc -exec sed -ne '/%GROUPS%/,/^$/{//d; p}' {} \; | sort -u ) COMPREPLY=( $( compgen -W "$( for i in $installed_groups; do echo ${i%-*-*}; done )" -- $cur ) ) } *************** *** 67,73 **** local available_groups local enabled_repos enabled_repos=$( grep '\[' /etc/pacman.conf | grep -v -e 'options' -e '^#' | tr -d '[]' ) ! available_groups=$( for r in $enabled_repos; do sed '/%GROUPS%/,/^$/{//d; p}' /var/lib/pacman/db/sync/$r/*/desc | sort -u; done ) COMPREPLY=( $( compgen -W "$( for i in $available_groups; do echo ${i%-*-*}; done )" -- $cur ) ) } --- 73,79 ---- local available_groups local enabled_repos enabled_repos=$( grep '\[' /etc/pacman.conf | grep -v -e 'options' -e '^#' | tr -d '[]' ) ! available_groups=$( for r in $enabled_repos; do sed '/%GROUPS%/,/^$/{//d; p}' $DBPATH/sync/$r/*/desc | sort -u; done ) COMPREPLY=( $( compgen -W "$( for i in $available_groups; do echo ${i%-*-*}; done )" -- $cur ) ) } *************** *** 137,142 **** --- 143,150 ---- { local a arg toparse op mod cur COMPREPLY=() + + get_dbpath # This argument parsing is done so we can check for flag existance later # right now it's a tad crappy, but does the job