From 71052cb69c455f8182e8f85ba8d4ea4be7e5caf0 Mon Sep 17 00:00:00 2001 From: Peter Stephenson Date: Thu, 21 Jun 2012 08:50:14 +0000 Subject: Danek (plus .distfiles): 30520: updated Solaris 11 copmletion --- Completion/Unix/Command/_zpool | 189 +++++++++++++++++++++++++++++------------ 1 file changed, 133 insertions(+), 56 deletions(-) (limited to 'Completion/Unix/Command/_zpool') 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:" # + "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' ;; -- cgit 1.4.1