pacman-key: rework importing distro/repo provided keyrings
[pacman-ng.git] / contrib / bash_completion.in
blobef04d5e1a099072c2d660bc32a9a73dc99c4a758
1 # This file is in the public domain.
3 _arch_compgen() {
4   local i r
5   COMPREPLY=($(compgen -W '$*' -- "$cur"))
6   for ((i=1; i < ${#COMP_WORDS[@]}-1; i++)); do
7     for r in ${!COMPREPLY[@]}; do
8       if [[ ${COMP_WORDS[i]} = ${COMPREPLY[r]} ]]; then
9         unset 'COMPREPLY[r]'; break
10       fi
11     done
12   done
15 _arch_ptr2comp() {
16   local list= x y
17   for x; do
18     for y in '0 --' '1 -'; do
19       eval 'set -- ${'$x'[${y% *}]}'
20       list+=\ ${@/#/${y#* }}
21     done
22   done
23   _arch_compgen $list
26 _arch_incomp() {
27   local r="\s-(-${1#* }\s|\w*${1% *})"; [[ $COMP_LINE =~ $r ]]
30 _makepkg() {
31   local cur opts prev
32   COMPREPLY=()
33   _get_comp_words_by_ref cur prev
34   if [[ $cur = -* && ! $prev =~ ^-(-(config|help)$|\w*[Chp]) ]]; then
35     opts=('allsource asroot check clean config force geninteg help holdver ignorearch
36            install log nobuild nocheck nocolor noconfirm nodeps noextract noprogressbar
37            nosign pkg repackage rmdeps sign skipinteg source syncdeps'
38           'A L R S c d e f g h i m o p r s')
39     _arch_ptr2comp opts
40   fi
41   true
44 _pacman_pkg() {
45   _arch_compgen "$(
46     if [[ $2 ]]; then
47       \pacman -$1 | \cut -d' ' -f1 | \sort -u
48     else
49       \pacman -$1
50     fi
51   )"
54 _pacman() {
55   local common core cur database prev query remove sync upgrade o
56   COMPREPLY=()
57   _get_comp_words_by_ref cur prev
58   database=('asdeps asexplicit')
59   query=('changelog check deps explicit file foreign groups info list owns
60           search unrequired upgrades' 'c e g i k l m o p s t u')
61   remove=('cascade dbonly nodeps nosave print recursive unneeded' 'c n p s u')
62   sync=('asdeps asexplicit clean dbonly downloadonly force groups ignore ignoregroup
63          info list needed nodeps print refresh recursive search sysupgrade'
64         'c f g i l p s u w y')
65   upgrade=('asdeps asexplicit force needed nodeps print recursive' 'f p')
66   common=('arch cachedir config dbpath debug help logfile noconfirm
67            noprogressbar noscriptlet quiet root verbose' 'b d h q r v')
68   core=('database help query remove sync upgrade version' 'D Q R S U V h')
70   for o in 'D database' 'Q query' 'R remove' 'S sync' 'U upgrade'; do
71     _arch_incomp "$o" && break
72   done
74   if [[ $? != 0 ]]; then
75     _arch_ptr2comp core
76   elif [[ ! $prev =~ ^-\w*[Vbhr] &&
77     ! $prev = --@(cachedir|config|dbpath|help|logfile|root|version) ]]
78   then
79     [[ $cur = -* ]] && _arch_ptr2comp ${o#* } common ||
80       case ${o% *} in
81       D|R)
82           _pacman_pkg Qq;;
83       Q)
84         { _arch_incomp 'g groups' && _pacman_pkg Qg sort; }    ||
85         { _arch_incomp 'p file'   && _pacman_file; }           ||
86           _arch_incomp 'o owns'   || _arch_incomp 'u upgrades' ||
87           _pacman_pkg Qq;;
88       S)
89         { _arch_incomp 'g groups' && _pacman_pkg Sg; }      ||
90         { _arch_incomp 'l list'   && _pacman_pkg Sl sort; } ||
91           _pacman_pkg Slq;;
92       U)
93           _pacman_file;;
94       esac
95   fi
96   true
99 if [[ $(type -t compopt) = "builtin" ]]; then
100   _pacman_file() {
101     compopt -o filenames; _filedir 'pkg.tar.*'
102   }
103   complete -F _pacman -o default pacman
104 else
105   _pacman_file() {
106     _filedir 'pkg.tar.*'
107   }
108   complete -F _pacman -o filenames -o default pacman
111 complete -F _makepkg -o default makepkg
113 # ex:et ts=2 sw=2 ft=sh