blob: 484fa01590797508d02bacfa8e29c17a6257a35a (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
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
|