blob: 3f42673e1a45b38b025939e92ce9c0b11136ac4f (
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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
|
#compdef zoneadm
# Synced with the S11U1 build 19 man page
_zoneadm_bootargs() {
# This is a subset of the arguments to kernel(1M)
_arguments -A "-*" \
'-i[Alternate init]:path:_path_files' \
'-m[SMF options]:option:_values "SMF option" debug milestone= quiet verbose' \
'-s[Boot single user]'
}
_zoneadm() {
local context state line expl
typeset -A opt_args
local -a subcmds fields
local -a solaris_attach solaris_install
local -a solaris10_attach solaris10_install
local brand brand_args
subcmds=(
attach boot clone detach halt help install list mark move
ready reboot uninstall verify
)
solaris_attach=(
'(-d)-a[Path to archive]:path:_path_files'
'(-a)-d[Path to zonepath]:directory:_path_files -/'
)
solaris_install=(
- set1
'-c[Path to certificate]:path:_path_files'
'*-e[Additional package]:package:'
'-k[Path to key]:path:_path_files'
'-P[Publisher/URI mapping]:publisher:'
- set2
'(-d)-a[Path to archive]:path:_path_files'
'(-a)-d[Path to installed zone root]:directory:path_files -/'
'-p[Preserve system configuration]'
'-s[Install silently]'
'-u[Unconfigure after installation]'
'-v[Verbose]'
)
solaris10_attach=(
'(-d)-a[Path to archive]:path:_path_files'
'(-a)-d[Path to zonepath]:directory:_path_files -/'
)
solaris10_install=(
'(-d)-a[Path to archive]:path:_path_files'
'(-a)-d[Path to installed zone root]:directory:path_files -/'
'-p[Preserve system configuration]'
'-s[Install silently]'
'-u[Unconfigure after installation]'
'-v[Verbose]'
)
if [[ $service == "zoneadm" ]]; then
_arguments -C -A "-*" \
'-R[Alternate root]:alternate root:_path_files -/' \
'-u[Zone UUID]:zone UUID: ' \
'-z[Zone name]:zone name:_zones' \
'*::command:->subcmd' && return 0
if (( CURRENT == 1 )); then
_wanted commands expl "zoneadm subcommand" compadd -a subcmds
return
fi
service="$words[1]"
curcontext="${curcontext%:*}=$service:"
fi
case $service in
("boot")
# Completion of boot arguments after -- is kinda hacky.
_arguments -S -A "-*" \
'-w[Force writable root]' \
'-W[Boot in transient r/w mode]' \
'*:boot options:_zoneadm_bootargs'
;;
("clone")
_arguments -A "-*" \
'-m[Clone mode]:mode:_values "mode" copy' \
'-s[Source snapshot]:snapshot:_zfs_dataset -t snap' \
':source zone:_zones'
;;
("attach")
if [[ -n $opt_args[-z] ]]; then
brand=${"${(@s,:,)$(zoneadm -z $opt_args[-z] list -p)}"[6]}
brand_args=${brand}_attach
fi
_arguments -A "-*" \
'-F[Force attach]' \
'-n[Path to zone manifest]:path to zone manifest:_path_files' \
'-u[Update on attach]' \
${(P)brand_args}
;;
("detach")
_arguments -A "-*" \
'-n[Dry run]'
;;
("halt"|"ready"|"reboot"|"verify")
;;
("help")
_wanted commands expl "zoneadm subcommand" compadd -a subcmds
;;
("install")
if [[ -n $opt_args[-z] ]]; then
brand=${"${(@s,:,)$(zoneadm -z $opt_args[-z] list -p)}"[6]}
brand_args=${brand}_install
fi
_arguments -A "-*" \
${(P)brand_args}
;;
("list")
_arguments -A "-*" \
'-c[Configured zones]' \
'-i[Installed zones]' \
'(-v)-p[Parsable output]' \
'(-p)-v[Verbose mode]'
;;
("mark")
_arguments -A "-*" \
':state:(incomplete unavailable)'
;;
("move")
_arguments -A "-*" \
':new zone path:_path_files -/'
;;
("uninstall")
_arguments -A "-*" \
'-F[Force]'
;;
esac
}
_zoneadm "$@"
|