mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-10-09 10:01:16 +02:00
78 lines
2 KiB
Text
78 lines
2 KiB
Text
#compdef beadm
|
|
|
|
local cmd expl args cmds
|
|
|
|
if (( CURRENT == 2 )); then
|
|
[[ $OSTYPE = solaris* ]] && cmds=( set-policy )
|
|
_wanted subcommands expl 'subcommand' compadd $cmds \
|
|
activate create destroy list mount rename unmount
|
|
return
|
|
fi
|
|
|
|
cmd="$words[2]"
|
|
curcontext="${curcontext%:*}-$cmd:"
|
|
shift words
|
|
(( CURRENT-- ))
|
|
|
|
case $cmd in
|
|
activate)
|
|
_wanted boot-environs expl 'boot environment' _be_name
|
|
;;
|
|
create)
|
|
[[ $OSTYPE = solaris* ]] && args=(
|
|
'-a[activate new BE]'
|
|
'-d[description]:description'
|
|
'*-o[property]:zfs property'
|
|
'-p[create new BE in specified zfs pool]:zfs pool:_zfs_pool'
|
|
)
|
|
_arguments -A "-*" -s $args \
|
|
'-e[base BE]:BE name or snapshot:_be_name -t all' \
|
|
':new BE name:'
|
|
;;
|
|
destroy)
|
|
[[ $OSTYPE = solaris* ]] && args=(
|
|
'-f[unmount BE if necessary]'
|
|
'(:)-O[destroy all orphaned boot environments]'
|
|
)
|
|
_arguments -A "-*" $args \
|
|
"-F[don't prompt for verification]" \
|
|
':BE or BE snapshot:_be_name'
|
|
;;
|
|
list)
|
|
if [[ $OSTYPE = solaris* ]]; then
|
|
args=( '-d[list subordinate filesystems]' )
|
|
elif [[ $OSTYPE = freebsd* ]]; then
|
|
args=( '-D[display space usage of boot environment]' )
|
|
fi
|
|
_arguments -A "-*" -s $args \
|
|
'-a[list subordinate filesystems and snapshots]' \
|
|
'-s[list snapshots]' \
|
|
'-H[parseable format]' \
|
|
':boot environment:_be_name'
|
|
;;
|
|
mount)
|
|
[[ $OSTYPE = solaris* ]] &&
|
|
args=( '-b[mount associated boot pool dataset]' )
|
|
_arguments -A "-*" $args \
|
|
':BE name:_be_name' \
|
|
':mountpoint:_path_files -/'
|
|
;;
|
|
rename)
|
|
_arguments -A "-*" \
|
|
':existing boot environment name:_be_name' \
|
|
':new boot environment:'
|
|
;;
|
|
set-policy)
|
|
_arguments -A "-*" \
|
|
'*-n[specify policy]:policy:(static -static noevict -noevict)' \
|
|
'*:BE name:_be_name'
|
|
;;
|
|
u(n|)mount)
|
|
_arguments -A "-*" \
|
|
'-f[force unmount]' \
|
|
':boot environment:_be_name'
|
|
;;
|
|
*)
|
|
_message "unknown beadm subcommand: $service"
|
|
;;
|
|
esac
|