summaryrefslogtreecommitdiff
path: root/Completion/Unix/Command/_zpool
diff options
context:
space:
mode:
authorPeter Stephenson <pws@users.sourceforge.net>2012-06-21 08:50:14 +0000
committerPeter Stephenson <pws@users.sourceforge.net>2012-06-21 08:50:14 +0000
commit71052cb69c455f8182e8f85ba8d4ea4be7e5caf0 (patch)
tree3cc9aa0959c21dfd32344e068dea009ec9f0af08 /Completion/Unix/Command/_zpool
parentcbb8a3c762ba6034e5ae0c35e6d04c2de130f933 (diff)
downloadzsh-71052cb69c455f8182e8f85ba8d4ea4be7e5caf0.tar.gz
zsh-71052cb69c455f8182e8f85ba8d4ea4be7e5caf0.zip
Danek (plus .distfiles): 30520: updated Solaris 11 copmletion
Diffstat (limited to 'Completion/Unix/Command/_zpool')
-rw-r--r--Completion/Unix/Command/_zpool189
1 files changed, 133 insertions, 56 deletions
diff --git a/Completion/Unix/Command/_zpool b/Completion/Unix/Command/_zpool
index 9692121ae..568f493d0 100644
--- a/Completion/Unix/Command/_zpool
+++ b/Completion/Unix/Command/_zpool
@@ -1,41 +1,91 @@
#compdef zpool
+# Synced with the S11U1 build 16 man page
_zpool() {
- local -a subcmds fields
+ local context state line expl
+ local -a subcmds fields ro_props rw_props versions create_properties_dataset
subcmds=(
- create destroy add remove list iostat status online
- offline clear attach detach replace scrub import export
- upgrade history get set
+ create destroy add remove list iostat status online
+ offline clear attach detach replace scrub import export
+ upgrade history get set split
)
- fields=(
- name\:"Pool name" size\:"Total size" used\:"Space used"
- available\:"Space available" capacity\:"Space used (percentage)"
- health\:"Health status"
+ versions=(
+ ${${${(M)"${(f)$(zpool upgrade -v)}":#[[:space:]]#<->*}##[[:space:]]}%%[[:space:]]*}
)
- properties=(
- "bootfs:value:"
- "autoreplace:value:(on off)"
- "delegation:value:(on off)"
+ ro_props=(
+ "all[All properties]"
+ "allocated[Space allocated]"
+ "capacity[Space used (percentage)]"
+ "dedupratio[Deduplication ratio]"
+ "free[Space unallocated]"
+ "guid[Unique identifier]"
+ "health[Health status]"
+ "size[Total size]"
)
- propnames=( ${properties%%:*} )
-
- import_properties=(
- xattr
- copies
- shareiscsi
- canmount
- share
- sharenfs
- userprop
- mount
+
+ rw_props=(
+ "altroot[Alternate root directory]:value:"
+ "autoexpand[Automatic pool expansion]:value:(on off)"
+ "autoreplace[Automatic device replacement]:value:(on off)"
+ "bootfs[Default bootable dataset]:value:"
+ "cachefile[Pool configuration cache file location]:value:"
+ "dedupditto[Threshold for number of copies]:value:"
+ "delegation[Delegated administration]:value:(on off)"
+ "failmode[Failure-mode behavior]:value:(wait continue panic)"
+ "listsnaps[Show snapshots in 'zfs list']:value:(on off)"
+ "version[Pool version]:version:($versions)"
+ )
+
+ fields=( ${ro_props%%:*} ${rw_props%%:*} )
+
+ create_properties_dataset=(
+ "aclinherit:value:(discard noallow restricted passthrough passthrough-x)"
+ "aclmode:value:(discard mask passthrough)"
+ "atime:value:(on off)"
+ "canmount:value:(on off noauto)"
+ "checksum:value:(on off fletcher2 fletcher4 sha256 sha256+mac)"
+ "compression:value:(on off lzjb gzip gzip-{1..9} zle)"
+ "copies:value:(1 2 3)"
+ "dedup:value:(on off verify sha256 sha256,verify)"
+ "devices:value:(on off)"
+ "encryption:value:(off on aes128-ccm aes-192-ccm aes-256-ccm aes-128-gcm aes-192-gcm aes-256-gcm)"
+ "exec:value:(on off)"
+ "groupquota@:value:" # TODO: complete group=size|none
+ "keysource:value:_zfs_keysource_props"
+ "logbias:value:(latency throughput)"
+ "mlslabel:value:(none)" # TODO: list sensitivity labels
+ "mountpoint:path, 'legacy', or 'none':{if [[ -prefix /* ]]; then _path_files -/; else _wanted mountpoints expl 'mountpoint (type \"/\" to start completing paths)' compadd legacy none; fi}"
+ "nbmand:value:(on off)"
+ "primarycache:value:(all none metadata)"
+ "quota:number or 'none':{if [[ -prefix [0-9]## ]]; then _message -e 'number'; elif [[ $PREFIX == quota= ]]; then _wanted none expl 'number or none' compadd none; else _wanted none expl 'quota' compadd none; fi}"
+ "readonly:value:(on off)"
+ "recordsize:value:(512 1K 2K 4K 8K 16K 32K 64K 128K 256K 512K 1M)"
+ "refquota:number or 'none':{if [[ -prefix [0-9]## ]]; then _message -e 'number'; elif [[ $PREFIX == refquota= ]]; then _wanted none expl 'number or none' compadd none; else _wanted none expl 'refquota' compadd none; fi}"
+ "refreservation:number or 'none':{if [[ -prefix [0-9]## ]]; then _message -e 'number'; elif [[ $PREFIX == refreservation= ]]; then _wanted none expl 'number or none' compadd none; else _wanted none expl 'refreservation' compadd none; fi}"
+ "reservation:value:{if [[ -prefix [0-9]## ]]; then _message -e 'number'; elif [[ $PREFIX == reservation= ]]; then _wanted none expl 'number or none' compadd none; else _wanted none expl 'reservation' compadd none; fi}"
+ "rstchown:value:(on off)"
+ "secondarycache:value:(all none metadata)"
+ "setuid:value:(on off)"
+ "shadow:value:" # TODO: complete URI|none
+ "share:share properties:"
+ "sharenfs:value:(on off)"
+ "sharesmb:value:(on off)"
+ "snapdir:value:(hidden visible)"
+ "sync:value:(standard always disabled)"
+ "userquota@:value:" # TODO: complete user=size|none
+ "version:value:(1 2 3 4 current)"
+ "volsize:value:" # <size>
+ "vscan:value:(on off)"
+ "xattr:value:(on off)"
+ "zoned:value:(on off)"
)
if [[ $service == "zpool" ]]; then
_arguments -C -A "-*" \
- '-\?[help]' \
+ '-\?[Help]' \
'*::command:->subcmd' && return 0
if (( CURRENT == 1 )); then
@@ -48,7 +98,9 @@ _zpool() {
case $service in
(clear)
- _arguments \
+ _arguments -A "-*" \
+ '-F[Discard transactions to allow pool opening]' \
+ '-n[With -F, check if discarding transactions would work]' \
':pool name:_zfs_pool' \
'*:virtual device:_files'
;;
@@ -56,38 +108,45 @@ _zpool() {
(create)
# TODO: investigate better vdev handling
_arguments -A "-*" \
- '-f[force use of in-use devices]' \
- '-n[display configuration without creating pool]' \
- '-R[use alternate root]:alternate root:_files -/' \
- '-m[set mountpoint for root dataset]:mountpoint:' \
+ '-o[Set pool property at creation time]:property:_values -s , "property" $rw_props' \
+ '-O[Set dataset property at creation time]:property:_values -s , "property" $create_properties_dataset' \
+ '-f[Force use of in-use devices]' \
+ '-l[Display configuration in /dev/chassis location form]' \
+ '-n[Display configuration without creating pool]' \
+ '-R[Use alternate root]:alternate root:_files -/' \
+ '-m[Set mountpoint for root dataset]:mountpoint:' \
':pool name:' \
'*:virtual device:_files'
;;
(destroy)
_arguments -A "-*" \
- '-f[force active datasets to be unmounted]' \
+ '-f[Force active datasets to be unmounted]' \
':pool name:_zfs_pool'
;;
(add)
_arguments -A "-*" \
- '-f[force use of in-use devices]' \
- '-n[display configuration without modifying pool]' \
+ '-f[Force use of in-use devices]' \
+ '-l[Display configuration in /dev/chassis location form]' \
+ '-n[Display configuration without modifying pool]' \
':pool name:_zfs_pool' \
'*:virtual device:_files'
;;
(list)
_arguments \
- '-H[scripted mode]' \
- '-o[fields to list]:field:_values -s , "field" ${^fields/\:/[}\]' \
+ '-H[Scripted mode]' \
+ '-T[timestamp]:value:(u d)' \
+ '-o[Fields to list]:field:_values -s , "field" $fields' \
'::pool name:_zfs_pool'
;;
(iostat)
_arguments -A "-*" \
- '-v[verbose statistics]' \
+ '-l[Display configuration in /dev/chassis location form]' \
+ '-T[timestamp]:value:(u d)' \
+ '-v[Verbose statistics]' \
'*::pool name:_zfs_pool' \
'::interval:' \
'::count:'
@@ -95,20 +154,23 @@ _zpool() {
(status)
_arguments -A "-*" \
- '-v[verbose information]' \
- '-x[show only unhealthy pools]' \
+ '-l[Display configuration in /dev/chassis location form]' \
+ '-v[Verbose information]' \
+ '-x[Show only unhealthy pools]' \
+ '-T[timestamp]:value:(u d)' \
'*::pool name:_zfs_pool'
;;
(offline)
_arguments -A "-*" \
- '-t[offline until next reboot]' \
+ '-t[Offline until next reboot]' \
':pool name:_zfs_pool' \
'*:virtual device:_files'
;;
(online)
_arguments \
+ '-e[Expand device to use all available space]' \
':pool name:_zfs_pool' \
'*:virtual device:_files'
;;
@@ -116,7 +178,7 @@ _zpool() {
(attach)
# TODO: first device should choose first from existing.
_arguments \
- '-f[force attach, even if in use]' \
+ '-f[Force attach, even if in use]' \
':pool name:_zfs_pool' \
':virtual device:_files' \
':virtual device:_files'
@@ -130,7 +192,7 @@ _zpool() {
(replace)
_arguments -A "-*" \
- '-f[force attach, even if in use]' \
+ '-f[Force attach, even if in use]' \
':pool name:_zfs_pool' \
':virtual device:_files' \
'::virtual device:_files'
@@ -138,57 +200,72 @@ _zpool() {
(scrub)
_arguments -A "-*" \
- '-s[stop scrubbing]' \
+ '-s[Stop scrubbing]' \
'*:pool name:_zfs_pool'
;;
(export)
_arguments -A "-*" \
- '-f[forcefully unmount all datasets]' \
+ '-f[Forcefully unmount all datasets]' \
'*:pool name:_zfs_pool'
;;
(import)
- # TODO: -o should complete options
+ # TODO: -o should complete mount options, too
_arguments -A "-*" \
- '*-d[search for devices or files in directory]:_files -/' \
- '-D[destroyed pools]' \
- '-f[force import]' \
+ '-D[Destroyed pools]' \
+ '(-d)*-c[Use cache file]:cache file:_files' \
+ '(-c)*-d[Search for devices or files in directory]:directory:_files -/' \
+ '-f[Force import]' \
+ '-l[Display configuration in /dev/chassis location form]' \
+ '-m[Ignore missing log devices]' \
+ '-R[Alternate root]:alternate root:_files -/' \
+ '-o[Set pool or dataset property]:property:_values -s , "property" $create_properties_dataset $rw_props' \
- set1 \
- '-o[mount options]' \
- '-p[set property]:property:_values -s , "property" $import_properties' \
- '-R[alternate root]:_files -/' \
'*:pool name or id:_zfs_pool' \
'::new pool name:' \
- set2 \
- '-a[all pools]'
+ '-N[Do not mount any filesystems]' \
+ '-a[All pools]'
;;
(get)
_arguments -A "-*" \
- ':property:_values -s , "property" $propnames all' \
+ ':property:_values -s , "property" $fields' \
'*:pool name:_zfs_pool'
;;
(set)
_arguments -A "-*" \
- ':property:_values -s , "property" $properties' \
+ ':property:_values -s , "property" $rw_props' \
'*:pool name:_zfs_pool'
;;
+ (split)
+ _arguments -A "-*" \
+ '-R[Alternate root]:alternate root:_files -/' \
+ '-l[Display configuration in /dev/chassis location form]' \
+ '-n[Display configuration without splitting]' \
+ '-o[Set pool or dataset property]:property:_values -s , "property" $create_properties_dataset $rw_props' \
+ ':pool name or id:_zfs_pool' \
+ ':new pool name:' \
+ '*::virtual device:_files -/'
+ ;;
+
(upgrade)
_arguments -A "-*" \
- set1 \
- '-v[display ZFS versions and descriptions]' \
+ '-v[Display ZFS versions and descriptions]' \
- set2 \
- '-a[upgrade all pools]' \
+ "-V[Upgrade to given version]:version:($versions)" \
+ '-a[Upgrade all pools]' \
'*:pool name:_zfs_pool'
;;
(history)
_arguments -A "-*" \
- '-i[display internal events]' \
- '-l[long format]' \
+ '-i[Display internal events]' \
+ '-l[Long format]' \
'*:pool name:_zfs_pool'
;;