blob: 6054fd768bcf19f236fa78c4fe4677592a56aa6e (
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
62
63
64
65
66
67
68
69
70
71
72
73
74
75
|
#compdef softwareupdate
_softwareupdate_ignored_update_name() {
if [[ -z "$_softwareupdate_ignored_updates" ]]; then
local res="$(_call_program pkgs softwareupdate --ignored)"
_softwareupdate_ignored_updates=("${(Qs/, /)${${res#Current ignored updates: \(}%\)}}")
fi
if (( ${#_softwareupdate_ignored_updates} > 0 )); then
_wanted pkgs expl "ignored package" compadd -a _softwareupdate_ignored_updates && return 0
fi
return 1
}
_softwareupdate_update_name() {
local name line
if [[ -z "$_softwareupdate_updates" ]]; then
_softwareupdate_updates=()
for line in ${(f)"$(_call_program pkgs softwareupdate --list)"}; do
if [[ $line == ' '* ]]; then
name="${line# ? }"
elif [[ -n "$name" ]]; then
_softwareupdate_updates+=("$name:${line# }")
name=""
fi
done
fi
if (( ${#_softwareupdate_updates} > 0 )); then
_describe -t pkgs "update name" _softwareupdate_updates && return 0
fi
return 1
}
_softwareupdate() {
local context state line expl
typeset -A opt_args
_arguments -R \
'(-h --help -l --list)-q[quiet mode]' \
{-l,--list}'[list all available updates]:*:' \
{-d,--download}'[download to directory set in InternetConfig]:*:' \
{-i,--install}'[install (requires root)]:*: :->install' \
'--ignored[show or manage ignored updates list (per-user)]:*:: :->ignored' \
'--schedule[scheduler preferences (per-user)]:automatic checking:(on off)' \
{-h,--help}'[print command usage]:*:' && return 0
case "$state" in
install)
_arguments \
'(* -a --all)'{-a,--all}'[all available active updates]' \
'(* -r --req)'{-r,--req}'[all required active updates]' \
'*:update name:_softwareupdate_update_name' && return 0
;;
ignored)
local -a ignored_subcmd
ignored_subcmd=(add remove)
if (( CURRENT == 1 )); then
_describe -t commands "subcommand" ignored_subcmd && return 0
fi
case $words[1] in
add)
_softwareupdate_update_name && return 0
;;
remove)
_arguments \
'(* -a --all)'{-a,--all}'[all available active updates]' \
'*:update name:_softwareupdate_ignored_update_name' && return 0
;;
esac
;;
esac
return 1
}
_softwareupdate "$@"
|