51 lines
974 B
Plaintext
51 lines
974 B
Plaintext
#compdef zoneadm zonecfg zlogin
|
|
|
|
_zones () {
|
|
case "$service" in
|
|
zoneadm) _zoneadm "$@";;
|
|
zonecfg) _zonecfg "$@";;
|
|
zlogin) _zlogin "$@";;
|
|
*) _message "Unknow service $service";;
|
|
esac
|
|
}
|
|
|
|
_zlogin () {
|
|
local -a zones
|
|
zones=($(zonelist))
|
|
_arguments \
|
|
'-l[username]:username:_users' \
|
|
'-C[console login]' \
|
|
'-S[safe login]' \
|
|
'-E[disable escape sequence character]' \
|
|
'*:zone:($zones)' && return
|
|
}
|
|
|
|
_zoneadm () {
|
|
local -a zones
|
|
zones=($(zonelist))
|
|
_arguments \
|
|
'-z[zone]:zone:($zones)' \
|
|
'*:command:(boot halt install list ready uninstall verify reboot)' && return
|
|
}
|
|
|
|
_zonecfg () {
|
|
local -a zones
|
|
zones=($(zonelist))
|
|
_arguments \
|
|
'-z[zone]:zone:($zones)' \
|
|
'-f[command file]:file:_files' && return
|
|
}
|
|
|
|
zonelist () {
|
|
local -a zones
|
|
|
|
# Fetch zone lists from /etc/zones/index
|
|
zones=(${${(a)"${(f)$(< /etc/zones/index)}"##\#*}//:*}) #" prevent vim become crazy
|
|
|
|
# Remove global zone from list "
|
|
zones[(r)global]=''
|
|
|
|
echo -n $zones
|
|
}
|
|
|
|
return 1 |