summary refs log tree commit diff
path: root/Completion/Redhat/Command/_scl
blob: e1a4b69db6c7c9a1f34bee6d2bd03d3c4f27940f (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
#compdef scl

local curcontext="$curcontext" dashes ret=1
local -a state line force alts cmd

[[ $words[2] = deregister ]] &&
    force=( '--force[deregister even SCL installed as packages]' )

_arguments -C $force \
  '(- 1)'{-l,--list}'[list installed software collections or packages within a collection]' \
  '(-l --list)1:action:(enable register deregister)' \
  '(-)*:collections:->collections' && ret=0

if [[ -n $state ]]; then
  (( $#line > 1 )) && curcontext="${curcontext%:*}-$line[1]:"
  if [[ $line[1] = register ]]; then
    _directories -P / -W /
    return
  fi
  if (( ${dashes:=$words[(I)--]} )); then
    shift dashes words
    (( CURRENT -= dashes ))
    _normal
    return
  fi
  if [[ $CURRENT -gt 3 && $words[CURRENT] = - ]]; then
    compadd - --
    return
  fi
  [[ $line[1] = enable && $CURRENT -gt 3 ]] &&
    cmd='command:command:_cmdstring'

  _alternative 'collections:collection:compadd
      $(_call_program collections ${words[1]} -l)' \
      $cmd && ret=0
fi

return ret