mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-11-29 03:31:01 +01:00
54000: new completion for FreeBSD's bectl
This commit is contained in:
parent
e20df6ee53
commit
fa40c50ee0
2 changed files with 107 additions and 0 deletions
|
|
@ -1,3 +1,7 @@
|
|||
2025-10-23 Oliver Kiddle <opk@zsh.org>
|
||||
|
||||
* 54000: Completion/BSD/Command/_bectl: new completion
|
||||
|
||||
2025-10-21 Jun-ichi Takimoto <takimoto-j@kba.biglobe.ne.jp>
|
||||
|
||||
* Mike Gilbert: 53992: Src/utils.c, configure.ac: check for
|
||||
|
|
|
|||
103
Completion/BSD/Command/_bectl
Normal file
103
Completion/BSD/Command/_bectl
Normal file
|
|
@ -0,0 +1,103 @@
|
|||
#compdef bectl
|
||||
|
||||
local cmd curcontext="$curcontext" ret=1
|
||||
local -a state line expl args opts bectl=( $words[1] )
|
||||
local -A opt_args
|
||||
|
||||
_arguments -C -s -A '-*' \
|
||||
'-h[display usage information]' \
|
||||
'-r+[specify boot environment root]:root:_zfs_dataset' \
|
||||
'1:action:((
|
||||
activate:"set the default boot environment"
|
||||
check:"perform silent sanity check"
|
||||
create:"create new boot environment or snapshot"
|
||||
destroy:"destroy boot environment or snapshot"
|
||||
export:"export boot environment to stdout"
|
||||
import:"import boot environment from stdin"
|
||||
jail:"create a jail of a boot environment"
|
||||
list:"display all boot environments"
|
||||
mount:"mount a boot environment"
|
||||
rename:"rename a boot environment"
|
||||
u{,n}jail:"destroy jail created from a boot environment"
|
||||
u{,n}mount:"unmount a boot environment"
|
||||
))' \
|
||||
'*:: :->args' && ret=0
|
||||
|
||||
if [[ $state = args ]]; then
|
||||
bectl+=( ${(kv)opt_args[(i)-r]} )
|
||||
cmd="$words[1]"
|
||||
curcontext="${curcontext%:*}-$cmd:"
|
||||
|
||||
case $cmd in
|
||||
activate|create|destroy|(ex|im)port|jail|rename|(|u|un)mount)
|
||||
args=( '1: :->boot-environs' )
|
||||
;|
|
||||
|
||||
activate)
|
||||
args+=(
|
||||
'(-T)-t[apply to the next boot only]'
|
||||
'(-t)-T[remove temporary boot once configuration]'
|
||||
)
|
||||
;;
|
||||
create)
|
||||
args+=(
|
||||
'-r[create recursive boot environment]'
|
||||
'-e+[clone specified boot environment]: :->boot-environs'
|
||||
)
|
||||
;;
|
||||
destroy)
|
||||
args+=(
|
||||
'-F[unmount without confirmation]'
|
||||
'-o[destroy the origin as well]'
|
||||
)
|
||||
;;
|
||||
jail)
|
||||
args+=(
|
||||
'(-U)-b[enable batch mode]'
|
||||
'(-b)-U[persistent jail]'
|
||||
'*-o+[set a jail parameter]:jail parameter'
|
||||
'*-u+[unset a jail parameter]:jail parameter'
|
||||
'*::: : _normal -p $service'
|
||||
)
|
||||
;;
|
||||
list)
|
||||
opts=( name creation origin used{,by{dataset,refreservation,snapshots}} )
|
||||
args+=(
|
||||
'(-D)-a[display all datasets]'
|
||||
'(-a -s)-D[display full space usage]'
|
||||
'-H[suppress printing of headers]'
|
||||
'(-D)-s[include snapshots]'
|
||||
"(-C)-c+[specify sort key (ascending)]:zfs property:($opts)"
|
||||
"(-c)-C+[specify sort key (descending)]:zfs property:($opts)"
|
||||
)
|
||||
;;
|
||||
mount)
|
||||
args+=( '2:mount point:_directories' )
|
||||
;;
|
||||
rename)
|
||||
args+=( '2:new boot environment' )
|
||||
;;
|
||||
u(|n)jail)
|
||||
args+=( '(*)1::jail:_jails' '*: :->boot-environs' )
|
||||
;;
|
||||
u(|n)mount)
|
||||
args+=( '-f[force unmount]' )
|
||||
;;
|
||||
esac
|
||||
|
||||
if (( $#args )); then
|
||||
_arguments -C -A '-*' -s $args
|
||||
else
|
||||
_default
|
||||
fi && ret=0
|
||||
fi
|
||||
|
||||
if [[ $state = boot-environs ]]; then
|
||||
[[ -prefix *@ ]] && opts=( -s )
|
||||
|
||||
_wanted boot-environs expl "boot environment" \
|
||||
compadd -r "@ \t\n\-" ${${${(f)"$(_call_program boot-environs
|
||||
$bectl $beopts list $opts -H 2>/dev/null)"}# }%%[[:blank:]]*} && ret=0
|
||||
fi
|
||||
|
||||
return ret
|
||||
Loading…
Add table
Add a link
Reference in a new issue