Git-Url: 
http://git.frugalware.org/gitweb/gitweb.cgi?p=frugalware-current.git;a=commitdiff;h=7ab6d75e3c897a1cb50687e803b1893ee72d17f5

commit 7ab6d75e3c897a1cb50687e803b1893ee72d17f5
Author: VÖRÖSKŐI András <voros...@frugalware.org>
Date:   Fri May 28 20:55:22 2010 +0200

bash-completion-1.1-4-i686

bash-completion fully rewritten, reenabled
closes #4223

diff --git a/source/apps/bash-completion/FrugalBuild 
b/source/apps/bash-completion/FrugalBuild
index 872693f..fa4fab2 100644
--- a/source/apps/bash-completion/FrugalBuild
+++ b/source/apps/bash-completion/FrugalBuild
@@ -3,7 +3,7 @@

pkgname=bash-completion
pkgver=1.1
-pkgrel=3
+pkgrel=4
pkgdesc="Programmable completion for bash"
url='http://bash-completion.alioth.debian.org/'
depends=('bash')
@@ -15,7 +15,7 @@ 
source=(http://bash-completion.alioth.debian.org/files/${pkgname}-${pkgver}.tar.
sha1sums=('dde4ca656c72adb8326a21f1774dd906f8aaef09' \
'48bbdacd715f5aac9ca8c8906326f5f645d8035e' \
'00f63fffacf0cf69b66febbc615f0f673b9960bd' \
-          '76f26c6a11a48b760e3e1745d014be37df7ea15d' \
+          '098589250bddc737e59dacf589085f287b97cced' \
'dd7e9d2a897c23e955db856e7a5639c869f82657')
options=('force') # remove after 1.3

@@ -25,5 +25,5 @@ build() {

Fexe /etc/profile.d/bash_completion.sh
Ffile /etc/bash_completion.d/frugalware
-       #Ffile /etc/bash_completion.d/pacman-g2
+       Ffile /etc/bash_completion.d/pacman-g2
}
diff --git a/source/apps/bash-completion/pacman-g2 
b/source/apps/bash-completion/pacman-g2
index 0be3745..63b689a 100644
--- a/source/apps/bash-completion/pacman-g2
+++ b/source/apps/bash-completion/pacman-g2
@@ -1,377 +1,116 @@
-# vim: set ft=sh ts=2 sw=2 et:
-# file: /etc/bash_completion.d/pacman-g2
-
-# Bash completion for pacman-g2
-# Based on the pacman-g1 (Arch Linux) version
-
-# Original: Manolis Tzanidakis <mtzanida...@freemail.gr>
-#
-# Distributed under the terms of the GNU General Public License, v2 or later.
-#
-
-## initial functions
-
-rem_selected ()
-{
-  # (Adapted from bash_completion by Ian Macdonald <i...@caliban.org>)
-  # This removes any options from the list of completions that have
-  # already been specified on the command line.
-  COMPREPLY=($(\echo "${comp_wor...@]}" | \
-    (while read -d ' ' i; do
-      [ "${i}" == "" ] && continue
-      # flatten array with spaces on either side,
-      # otherwise we cannot grep on word boundaries of
-      # first and last word
-      COMPREPLY=" ${comprep...@]} "
-      # remove word from list of completions
-      COMPREPLY=(${COMPREPLY/ ${i%% *} / })
+# pacman-g2 bash-completion file
+# Based on the Arch Linux version
+# This file is in the public domain.
+
+_arch_compgen() {
+  local i r
+  COMPREPLY=($(compgen -W '$*' -- "$cur"))
+  for ((i=1; i < ${#comp_wor...@]}-1; i++)); do
+    for r in ${!comprep...@]}; do
+      if [[ ${COMP_WORDS[i]} = ${COMPREPLY[r]} ]]; then
+        unset 'COMPREPLY[r]'; break
+      fi
done
-    \echo ${comprep...@]})))
-  return 0
-}
-
-_available_repos ()
-{
-  COMPREPLY=( $( compgen -W "$(\grep '\[' /etc/pacman-g2.conf | \grep -v -e 
'options' -e '^#' | \tr -d '[]' )" -- $cur ) )
-}
-
-_installed_pkgs ()
-{
-  local installed_pkgs
-  installed_pkgs=$( \ls /var/lib/pacman-g2/local/ )
-  COMPREPLY=( $( compgen -W "$( for i in $installed_pkgs; do \echo ${i%-*-*}; 
done )" -- $cur ) )
-}
-
-_available_pkgs ()
-{
-  #find balks easilly on a find /foo/*/* type dir, especially one like
-  #   /var/lib/pacman-g2/*/*
-  # This little change-up removes the find *and* only uses enabled repos
-  local available_pkgs
-  local enabled_repos
-  enabled_repos=$( \grep '\[' /etc/pacman-g2.conf | \grep -v -e 'options' -e 
'^#' | \tr -d '[]' )
-  available_pkgs=$( for r in $enabled_repos; do \echo 
/var/lib/pacman-g2/sync/$r/*; done )
-  COMPREPLY=( $( compgen -W "$( for i in $available_pkgs; do j=${i##*/}; echo 
${j%-*-*}; done )" -- $cur ) )
+  done
}

-_installed_groups ()
-{
-  local installed_groups
-  installed_groups=$( \find /var/lib/pacman-g2/local -name desc -exec \sed -ne 
'/%GROUPS%/,/^$/{//d; p}' {} \; | \sort -u )
-  COMPREPLY=( $( compgen -W "$( for i in $installed_groups; do \echo 
${i%-*-*}; done )" -- $cur ) )
+_arch_ptr2comp() {
+  local list= x y
+  for x; do
+    for y in '0 --' '1 -'; do
+      eval 'set -- ${'$x'[${y% *}]}'
+      list+=\ ${@/#/${y#* }}
+    done
+  done
+  _arch_compgen $list
}

-_available_groups ()
-{
-  #find balks easilly on a find /foo/*/* type dir, especially one like
-  #   /var/lib/pacman-g2/*/*
-  # This little change-up removes the find *and* only uses enabled repos
-  local available_groups
-  local enabled_repos
-  enabled_repos=$( \grep '\[' /etc/pacman-g2.conf | \grep -v -e 'options' -e 
'^#' | tr -d '[]' )
-  available_groups=$( for r in $enabled_repos; do \sed '/%GROUPS%/,/^$/{//d; 
p}' /var/lib/pacman-g2/sync/$r/*/desc | \sort -u; done )
-  COMPREPLY=( $( compgen -W "$( for i in $available_groups; do \echo 
${i%-*-*}; done )" -- $cur ) )
+_arch_incomp() {
+  local r="\s-(-${1#* }\s|\w*${1% *})"; [[ $COMP_LINE =~ $r ]]
}

-## makepkg completion
-
-_makepkg ()
-{
-  local cur prev
+_makepkg() {
+  local cur opts prev
COMPREPLY=()
-  cur=${COMP_WORDS[COMP_CWORD]}
+  cur=$(_get_cword)
prev=${COMP_WORDS[COMP_CWORD-1]}
-
-  case "$prev" in
-    -p)
-      _filedir
-      return 0
-    ;;
-    --help|--cleancache)
-      COMPREPLY=''
-      return 0
-    ;;
-  esac
-
-  if [[ "$cur" == -* ]]; then
-    COMPREPLY=( $( compgen -W '\
-      -a --searchdeps \
-      -A \
-      -b --builddeps \
-      -B --nocache \
-      -c --clean \
-      -C --cleancache \
-      -d --nodeps \
-      -D \
-      -e --noextract \
-      -f --force \
-      -g --gensha1 \
-      -G --wrtsha1 \
-      -h --help \
-      -i --install \
-      -j \
-      -l \
-      -m --nocolor \
-      -n --nostrip \
-      -o --nobuild \
-      -p \
-      -r --rmdeps \
-      -R --chroot \
-      -H --host \
-      -s --syncdeps \
-      -t --tree \
-      -u --noup2date \
-      -w \
-      --gzip \
-      --noconfirm \
-      --noprogressbar' -- $cur ) )
+  if [[ $cur = -* && ! $prev =~ ^-(-(cleancache|help)$|\w*[Ch]) ]]; then
+    opts=('searchdeps builddeps noccache clean nodeps noextract force
+           gensha1 wrtsha1 help install nocolor nostrip nobuild rmdeps
+           chroot host syncdeps noup2date gzip noconfirm noprogressbar'
+          'a A b B c C d D e f g G h i j l m n o p r R H s t u w')
+    _arch_ptr2comp opts
fi
-
-  rem_selected
+  true
}
-complete -o default -F _makepkg makepkg

-## pacman-g2 completion
-
-_instring ()
-{
-  str="${1}"
-  shift 1
-  for c in "$...@}"; do
-    if [ $(\expr index "${str}" "${c}") -gt 0 ]; then
-      return 0
+_pacman_g2_pkg() {
+  _arch_compgen "$(
+    if [[ $2 ]]; then
+      if [[ $1 == Qg ]]; then
+        \pacman-g2 -$1 | \cut -d' ' -f1 | \sort -u
+      else
+        \pacman-g2 -$1 | \cut -d' ' -f2 | \sort -u
+      fi
+    else
+      if [[ $1 == Q ]]; then
+        \pacman-g2 -$1 | \cut -d' ' -f1
+      else
+        \pacman-g2 -$1 | \cut -d' ' -f2
+      fi
fi
-  done
-  return 1
+  )"
}

-_pacman-g2 ()
-{
-  local a arg toparse op mod cur
-  COMPREPLY=()
-
-  # This argument parsing is done so we can check for flag existance later
-  #  right now it's a tad crappy, but does the job
-  for (( i=1; i < ${#comp_wor...@]}-1; i++ )); do
-    a=${COMP_WORDS[i]}
-    arg="${a:0:2}"
-    toparse="${a:2}"
-
-    case "${arg}" in
-      -@(A|F|Q|R|S|U|V|h))
-        op="${arg/-}"
-        mod="${mod}${a:2}"
-        ;;
-      --)
-        arg="${a:2}"
-        case "${arg}" in
-          add) op="A" ;;
-          freshen) op="F" ;;
-          query) op="Q" ;;
-          remove) op="R" ;;
-          sync) op="S" ;;
-          upgrade) op="U" ;;
-          version) op="V" ;;
-          help) op="h" ;;
-          verbose) mod="${mod}v" ;;
-          root) mod="${mod}r" ;;
-          dbpath) mod="${mod}b" ;;
-          nodeps) mod="${mod}d" ;;
-          force) mod="${mod}f" ;;
-          groups) mod="${mod}g" ;;
-          info) mod="${mod}i" ;;
-          list) mod="${mod}l" ;;
-          print-uris) mod="${mod}p" ;;
-          search) mod="${mod}s" ;;
-          sysupgrade) mod="${mod}u" ;;
-          downloadonly) mod="${mod}w" ;;
-          refresh) mod="${mod}y" ;;
-          changelog) mod="${mod}c" ;;
-          deps) mod="${mod}d" ;;
-          orphans) mod="${mod}e" ;;
-          dependsonly) mod="${mod}e" ;;
-          test) mod="${mod}t" ;;
-          foreign) mod="${mod}m" ;;
-          owns) mod="${mod}o" ;;
-          file) mod="${mod}p" ;;
-          search) mod="${mod}s" ;;
-          cascade) mod="${mod}c" ;;
-          nosave) mod="${mod}n" ;;
-          recursive) mod="${mod}s" ;;
-          keep) mod="${mod}k" ;;
-        esac ;;
-      *) toparse="${a}" ;;
-    esac
+_pacman_g2_file() {
+  compopt -o filenames; _filedir 'fpm'
+}

-    arglen=$(( ${#toparse}-1 ))
-    for c in $(\seq 0 "${arglen}"); do
-      arg=${toparse:$c:1}
-      [ "${arg}" != "-" ] && mod="${mod}${arg}"
-    done
+_pacman_g2() {
+  local common core cur prev query remove sync o
+  COMPREPLY=()
+  cur=$(_get_cword)
+  prev=${COMP_WORDS[COMP_CWORD-1]}
+  query=('changelog nodeps orphans groups info list foreign owns file search 
test'
+         'c d e g i l m o p s t')
+  remove=('cascade keep nosave recursive' 'c k n s')
+  sync=('clean dependsonly groups info list print-uris search sysupgrade
+         downloadonly refresh ignore' 'c e g i l p s u w y')
+  common=('nodeps force noarch root dbpath verbose config noconfirm ask
+           noprogressbar noscriptlet nointegrity regex' 'd f r b v')
+  core=('add freshen help query remove sync upgrade version' 'D Q R S U V h')
+
+  for o in 'A add' 'F freshen' 'Q query' 'R remove' 'S sync' 'U upgrade'; do
+    _arch_incomp "$o" && break
done

-  cur=${COMP_WORDS[COMP_CWORD]}
-
-  if [ $COMP_CWORD -eq 1 ] && [[ "$cur" == -* ]]; then
-    COMPREPLY=( $( compgen -W '\
-      -A --add \
-      -F --freshen \
-      -h --help \
-      -Q --query \
-      -R --remove \
-      -S --sync \
-      -U --upgrade \
-      -V --version \
-      ' -- $cur ) )
-    rem_selected
-    return 0
-  fi
-
-  if [[ "$cur" == -* ]]; then
-    case "${op}" in
-      A|F|U)
-        COMPREPLY=( $( compgen -W '\
-          -d --nodeps \
-          -f --force \
-          -h --help \
-          --config \
-          --noarch \
-          --noconfirm \
-          --ask \
-          --noprogressbar \
-          --noscriptlet \
-          --nointegrity \
-          -v --verbose \
-          -r --root \
-          -b --dbpath \
-          ' -- $cur ) )
-        return 0
-        ;;
+  if [[ $? != 0 ]]; then
+    _arch_ptr2comp core
+  elif ! [[ $prev =~ ^-\w*[Vbhr] ||
+    $prev = --@(cachedir|dbpath|help|root|version) ]]
+  then
+    [[ $cur = -* ]] && _arch_ptr2comp ${o#* } common ||
+      case ${o% *} in
R)
-        COMPREPLY=( $( compgen -W '\
-          -c --cascade \
-          -k --keep \
-          -n --nosave \
-          -s --recursive \
-          -d --nodeps \
-          -f --force \
-          -h --help \
-          --config \
-          --noarch \
-          --noconfirm \
-          --ask \
-          --noprogressbar \
-          --noscriptlet \
-          --nointegrity \
-          -v --verbose \
-          -r --root \
-          -b --dbpath \
-          ' -- $cur ) )
-        return 0
-        ;;
-      S)
-        COMPREPLY=( $( compgen -W '\
-          -c --clean \
-          -e --dependsonly \
-          -g --groups \
-          -i --info \
-          -l --list \
-          -p --print-uris \
-          -s --search \
-          -u --sysupgrade \
-          -w --downloadonly \
-          -y --refresh \
-          --ignore \
-          -d --nodeps \
-          -f --force \
-          -h --help \
-          --config \
-          --noarch \
-          --noconfirm \
-          --ask \
-          --noprogressbar \
-          --noscriptlet \
-          --nointegrity \
-          -v --verbose \
-          -r --root \
-          -b --dbpath \
-          ' -- $cur ) )
-        return 0
-        ;;
+          _pacman_g2_pkg Q;;
Q)
-        COMPREPLY=( $( compgen -W '\
-          -c --changelog \
-          -e --orphans \
-          -g --groups \
-          -i --info \
-          -l --list \
-          -m --foreign \
-          -o --owns \
-          -p --file \
-          -s --search \
-          -t --test \
-          -d --nodeps \
-          -f --force \
-          -h --help \
-          --config \
-          --noarch \
-          --noconfirm \
-          --ask \
-          --noprogressbar \
-          --noscriptlet \
-          --nointegrity \
-          -v --verbose \
-          -r --root \
-          -b --dbpath \
-          ' -- $cur ) )
-        return 0
-        ;;
-    esac
-    rem_selected
-  else
-    case "${op}" in
-      A|F|U)
-        COMPREPLY=( $( compgen -d -- "$cur" ) \
-                    $( compgen -f -X '!*.fpm' -- "$cur" ) )
-        return 0
-        ;;
-      h|V)
-        COMPREPLY=''
-        return 0
-        ;;
-      Q)
-        if _instring $mod g; then
-          _installed_groups
-        elif _instring $mod o; then
-          COMPREPLY=( $( compgen -d -- "$cur" ) \
-                      $( compgen -f -- "$cur" ) )
-        elif _instring $mod p; then
-          COMPREPLY=( $( compgen -d -- "$cur" ) \
-                      $( compgen -f -X '!*.fpm' -- "$cur" ) )
-        elif _instring $mod u; then
-          COMPREPLY=''
-          return 0
-        else
-          _installed_pkgs
-        fi
-        return 0
-        ;;
-      R)
-        _installed_pkgs
-        return 0
-        ;;
+        { _arch_incomp 'g groups' && _pacman_g2_pkg Qg sort; }    ||
+        { _arch_incomp 'p file'   && _pacman_g2_file; }           ||
+          _arch_incomp 'o owns'   || _arch_incomp 'u upgrades' ||
+          _pacman_g2_pkg Q;;
S)
-        if _instring $mod l; then
-          _available_repos
-        else
-          _available_pkgs
-        fi
-        return 0
-        ;;
-    esac
+        { _arch_incomp 'g groups' && _pacman_g2_pkg Sg; }      ||
+        { _arch_incomp 'l list'   && _pacman_g2_pkg Sl sort; } ||
+          _pacman_g2_pkg Sl;;
+      A|F|U)
+          _pacman_g2_file;;
+      esac
fi
-
-  rem_selected
+  true
}
-complete -o filenames -F _pacman-g2 pacman-g2
-complete -o filenames -F _pacman-g2 pacman
+
+complete -F _makepkg -o default makepkg
+complete -F _pacman_g2  -o default pacman
+complete -F _pacman_g2  -o default pacman-g2
+
+# ex:et ts=2 sw=2 ft=sh
_______________________________________________
Frugalware-git mailing list
Frugalware-git@frugalware.org
http://frugalware.org/mailman/listinfo/frugalware-git

Reply via email to