aboutsummaryrefslogtreecommitdiff
path: root/completion/bash.in
blob: 69dba618067da2aa175175aac5a187fed0b5778a (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
make_import _arch_compgen

make_import _arch_ptr2comp

make_import _arch_incomp

make_import _pacman_pkg

make_import _pacman_file

_pakku() {
  local common core cur database files prev query remove sync upgrade o
  COMPREPLY=()
  _get_comp_words_by_ref cur prev
  database=('asdeps asexplicit')
  files=('list machinereadable owns search refresh regex' 'l o s x y')
  query=('changelog check deps explicit file foreign groups info list owns
          search unrequired upgrades' 'c e g i k l m o p s t u')
  remove=('cascade dbonly nodeps assume-installed nosave print recursive unneeded' 'c n p s u')
  sync=('asdeps asexplicit clean dbonly downloadonly force groups ignore ignoregroup
         info list needed nodeps assume-installed print refresh recursive search sysupgrade
         build keyserver noaur source'
        'c g i l n p s u w y z')
  upgrade=('asdeps asexplicit force needed nodeps assume-installed print recursive' 'p')
  common=('arch cachedir color config confirm dbpath debug gpgdir help hookdir logfile
           noconfirm noprogressbar noscriptlet quiet root verbose' 'b d h q r v')
  core=('database files help query remove sync upgrade version' 'D F Q R S U V h')

  for o in 'D database' 'F files' 'Q query' 'R remove' 'S sync' 'U upgrade'; do
    _arch_incomp "$o" && break
  done

  if [[ $? != 0 ]]; then
    _arch_ptr2comp core
  elif [[ ! $prev =~ ^-\w*[Vbhr] &&
    ! $prev = --@(cachedir|color|config|dbpath|help|hookdir|gpgdir|keyserver|logfile|root|version) ]]
  then
    [[ $cur = -* ]] && _arch_ptr2comp ${o#* } common ||
      case ${o% *} in
      D|R)
          _pacman_pkg Qq;;
      F)
          _arch_incomp 'l list'   && _pacman_pkg Slq;
          ;;
      Q)
        { _arch_incomp 'g groups' && _pacman_pkg Qg sort; }    ||
        { _arch_incomp 'p file'   && _pacman_file; }           ||
          _arch_incomp 'o owns'   || _arch_incomp 'u upgrades' ||
          _pacman_pkg Qq;;
      S)
        { _arch_incomp 'g groups' && _pacman_pkg Sg; }      ||
        { _arch_incomp 'l list'   && _pacman_pkg Sl sort; } ||
          _arch_compgen "`pakku -Ssq "$cur" 2> /dev/null`";;
      U)
          _pacman_file;;
      esac
  fi
  true
}

complete -F _pakku -o default pakku