mirror of
git://git.code.sf.net/p/zsh/code
synced 2024-11-19 13:33:52 +01:00
60 lines
1.4 KiB
Plaintext
60 lines
1.4 KiB
Plaintext
#compdef update-alternatives
|
|
|
|
local curcontext="$curcontext" context state line alterdir
|
|
|
|
if [[ -d /var/lib/dpkg/alternatives ]]; then
|
|
alterdir=/var/lib/dpkg/alternatives
|
|
elif [[ -d /var/lib/rpm/alternatives/ ]]; then
|
|
alterdir=/var/lib/rpm/alternatives
|
|
fi
|
|
|
|
_arguments -C \
|
|
'--verbose' \
|
|
'--quiet' \
|
|
'--test' \
|
|
'--help' \
|
|
'--version' \
|
|
'--altdir:altdir:_files -/' \
|
|
'--admindir:admindir:_files -/' \
|
|
'--install:*::alt:= ->install' \
|
|
'--remove:*::alt:= ->remove' \
|
|
'--auto:name:_files -W $alterdir' \
|
|
'--display:name:_files -W $alterdir' \
|
|
'--config:name:_files -W $alterdir' && return
|
|
|
|
while true; do
|
|
case "$state" in
|
|
islave)
|
|
_call_function ret _update_alternatives_$state && return ret
|
|
state=
|
|
_arguments -C \
|
|
'1:link:_files' \
|
|
'2:name:_files -W $alterdir' \
|
|
'3:path:_files' \
|
|
'--slave:*::more:= ->islave' && return
|
|
[[ -z $state ]] && return 1
|
|
;;
|
|
|
|
install)
|
|
_call_function ret _update_alternatives_$state && return ret
|
|
_arguments -C \
|
|
'1:link:_files' \
|
|
'2:name:_files -W $alterdir' \
|
|
'3:path:_files' \
|
|
'4:priority:' \
|
|
'--slave:*::slave:= ->islave' && return
|
|
[[ -z $state ]] && return 1
|
|
;;
|
|
|
|
remove)
|
|
_call_function ret _update_alternatives_$state && return ret
|
|
_arguments \
|
|
'1:name:_files -W $alterdir' \
|
|
'2:path:_files'
|
|
return
|
|
;;
|
|
|
|
*) return 1 ;;
|
|
esac
|
|
done
|