mirror of
git://git.code.sf.net/p/zsh/code
synced 2024-10-01 16:31:53 +02:00
unposted: softwareupdate is a system software update tool for Mac OS X
This commit is contained in:
parent
1b50dff802
commit
da1d4534a6
@ -1,3 +1,7 @@
|
||||
2005-03-04 Motoi Washida <a66@h8.dion.ne.jp>
|
||||
|
||||
* unposted: Completion/Darwin/Command/_softwareupdate: new completion
|
||||
|
||||
2005-03-03 Oliver Kiddle <opk@zsh.org>
|
||||
|
||||
* 20921, 20924: Src/utils.c, Completion/Unix/Command/_iconv:
|
||||
|
75
Completion/Darwin/Command/_softwareupdate
Normal file
75
Completion/Darwin/Command/_softwareupdate
Normal file
@ -0,0 +1,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 "subcommands" 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 "$@"
|
Loading…
Reference in New Issue
Block a user