components/zsh/Completion/Unix/Command/_zfs
author Danek Duvall <danek.duvall@oracle.com>
Thu, 17 Feb 2011 13:44:40 -0800
changeset 93 b579c7b1bb44
child 429 02007d525e89
permissions -rw-r--r--
7016731 move zsh from sfw to userland
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
93
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
     1
#compdef zfs
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
     2
# Synced with the Nevada build 131 man page
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
     3
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
     4
_zfs() {
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
     5
	local context state line expl
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
     6
	typeset -A opt_args
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
     7
	local -a subcmds rw_properties rw_propnames ro_properties create_properties
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
     8
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
     9
	subcmds=(
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    10
		"create" "destroy" "clone" "promote" "rename" "snapshot"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    11
		"rollback" "list" "set" "get" "inherit" "mount" "unmount"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    12
		"share" "unshare" "send" "receive" "allow" "unallow"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    13
		"upgrade" "userspace" "groupspace" "hold" "holds" "release"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    14
	)
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    15
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    16
	# TODO: userused@ and groupused@ could have more extensive handling
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    17
	ro_properties=(
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    18
		"name" "type" "creation" "used" "available" "referenced"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    19
		"compressratio" "mounted" "origin" "usedbychildren"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    20
		"usedbydataset" "usedbyrefreservation" "usedbysnapshots"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    21
		"defer_destroy" "userused@" "userrefs" "groupused@"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    22
	)
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    23
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    24
	# TODO: Be cleverer about what values can be set.  Is there any way to
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    25
	# set the sorting for *size properties to false by default?
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    26
	rw_properties=(
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    27
		"aclinherit:value:(discard noallow restricted passthrough passthrough-x)"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    28
		"aclmode:value:(discard groupmask passthrough)"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    29
		"atime:value:(on off)"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    30
		"canmount:value:(on off noauto)"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    31
		"checksum:value:(on off fletcher2 fletcher4 sha256)"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    32
		"compression:value:(on off lzjb gzip gzip-{1..9} zle)"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    33
		"copies:value:(1 2 3)"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    34
		"dedup:value:(on off verify sha256 sha256,verify)"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    35
		"devices:value:(on off)"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    36
		"exec:value:(on off)"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    37
		"groupquota@:value:" # TODO: complete group=size|none
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    38
		"logbias:value:(latency throughput)"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    39
		"mlslabel:value:(none)" # TODO: list sensitivity labels
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    40
		"mountpoint:path, 'legacy', or 'none':{if [[ -prefix /* ]]; then _path_files -/; else _wanted mountpoints expl 'mountpoint (type \"/\" to start completing paths)' compadd legacy none; fi}"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    41
		"nbmand:value:(on off)"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    42
		"primarycache:value:(all none metadata)"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    43
		"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}"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    44
		"readonly:value:(on off)"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    45
		"recordsize:value:(512 1K 2K 4K 8K 16K 32K 64K 128K)"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    46
		"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}"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    47
		"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}"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    48
		"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}"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    49
		"secondarycache:value:(all none metadata)"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    50
		"setuid:value:(on off)"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    51
		"shareiscsi:value:(on off type=disk)"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    52
		"sharenfs:value:(on off)" # or share(1M) options
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    53
		"sharesmb:value:(on off)" # or sharemgr(1M) options
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    54
		"snapdir:value:(hidden visible)"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    55
		"userquota@:value:" # TODO: complete user=size|none
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    56
		"version:value:(1 2 current)"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    57
		"volsize:value:" # <size>
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    58
		"vscan:value:(on off)"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    59
		"xattr:value:(on off)"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    60
		"zoned:value:(on off)"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    61
	)
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    62
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    63
	create_properties=(
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    64
		$rw_properties
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    65
		"casesensitivity:value:(sensitive insensitive mixed)"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    66
		"normalization:value:(none formC formD formKC formKD)"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    67
		"utf8only:value:(on off)"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    68
		"volblocksize:value:(512 1K 2K 4K 8K 16K 32K 64K 128K)"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    69
	)
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    70
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    71
	delegatable_perms=(
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    72
		"allow" "clone" "create" "destroy" "mount" "promote"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    73
		"receive" "rename" "rollback" "send" "share" "snapshot"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    74
		${create_properties%%:*}
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    75
	)
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    76
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    77
	rw_propnames=( ${rw_properties%%:*} )
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    78
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    79
	if [[ $service == "zfs" ]]; then
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    80
		_arguments -C -A "-*" \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    81
			'-\?[Help]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    82
			'*::command:->subcmd' && return 0
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    83
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    84
		if (( CURRENT == 1 )); then
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    85
			_wanted commands expl "zfs subcommand" compadd -a subcmds
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    86
			return
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    87
		fi
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    88
		service="$words[1]"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    89
		curcontext="${curcontext%:*}=$service:"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    90
	fi
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    91
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    92
	case $service in
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    93
	("create")
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    94
		_arguments -A "-*" \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    95
			'-p[Create parent datasets]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    96
			'-o[Set initial properties]:property:_values -s , "property" $create_properties' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    97
			- set1 \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    98
			':filesystem:' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
    99
			- set2 \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   100
			'-s[Create sparse volume]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   101
			'-b[Set volblocksize]:blocksize:' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   102
			'-V[Set size]:size:' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   103
			':volume:'
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   104
		;;
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   105
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   106
	("destroy")
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   107
		_arguments -A "-*" \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   108
			'-r[Recursively destroy all children]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   109
			'-R[Recursively destroy all dependents]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   110
			- set1 \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   111
			'-d[delete or mark deferred]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   112
			':snapshot:_zfs_dataset -t snap' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   113
			- set2 \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   114
			'-f[Force unmounts]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   115
			':filesystem/volume/snapshot:_zfs_dataset -t fs -t vol'
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   116
		;;
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   117
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   118
	("snapshot")
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   119
		_arguments -A "-*" \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   120
			'-r[Recursively snapshot all descendant datasets]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   121
			'-o[Set property]:property:_values -s , "property" $create_properties' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   122
			':filesystem/volume:_zfs_dataset -t fs -t vol -S@'
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   123
		;;
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   124
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   125
	("rollback")
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   126
		_arguments -A "-*" \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   127
			'-r[Recursively destroy more recent snapshots]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   128
			'-R[Recursively destroy more recent snapshots and clones]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   129
			'-f[Force unmounts]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   130
			':snapshot:_zfs_dataset -t snap'
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   131
		;;
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   132
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   133
	("clone")
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   134
		# XXX needs to bail if there are no snapshots
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   135
		_arguments -A "-*" \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   136
			'-p[Create parent datasets]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   137
			'-o[Set property]:property:_values -s , "property" $create_properties' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   138
			':snapshot:_zfs_dataset -t snap' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   139
			':filesystem/volume:'
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   140
		;;
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   141
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   142
	("promote")
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   143
		# XXX complete only cloned filesystems
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   144
		_arguments \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   145
			':filesystem:_zfs_dataset -t fs' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   146
		;;
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   147
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   148
	("rename")
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   149
		_arguments -A "-*" \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   150
			- set1 \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   151
			'-p[Create parent datasets]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   152
			':filesystem/volume/snapshot:_zfs_dataset' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   153
			':filesystem/volume/snapshot:' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   154
			- set2 \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   155
			'-r[Recursively rename snapshots of all descendent datasets]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   156
			':snapshot:_zfs_dataset -t snap' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   157
			':snapshot:'
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   158
		;;
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   159
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   160
	("list")
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   161
		_arguments -A "-*" \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   162
			'-r[Recursively display children]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   163
			'-H[Scripting mode]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   164
			'-d[Depth]:value:' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   165
			'-o[Properties to list]:property:_values -s , "property" $ro_properties $rw_propnames' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   166
			'*-s[Sort key (ascending)]:property:_values "property" $ro_properties $rw_propnames' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   167
			'*-S[Sort key (descending)]:property:_values "property" $ro_properties $rw_propnames' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   168
			'-t[Dataset types to list]:dataset type:_values -s , "dataset type" filesystem snapshot volume' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   169
			'*:filesystem/volume/snapshot:_zfs_dataset'
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   170
		;;
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   171
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   172
	("set")
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   173
		_arguments \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   174
			':property:_values -s , "property" $rw_properties' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   175
			'*:filesystem/volume:_zfs_dataset -t fs -t vol'
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   176
		;;
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   177
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   178
	("get")
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   179
		_arguments -A "-*" \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   180
			"-r[Recursively display children's properties]" \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   181
			'-d[Depth]:value:' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   182
			'-H[Scripting mode]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   183
			'-p[Display numbers exactly]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   184
			'-s[Specify sources]:source:_values -s , "source" local default inherited temporary none' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   185
			'-o[Specify fields]:field:_values -s , "field" name property value source' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   186
			':property:_values -s , "property" $ro_properties $rw_propnames all' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   187
			'*:filesystem/volume/snapshot:_zfs_dataset'
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   188
		;;
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   189
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   190
	("inherit")
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   191
		_arguments -A "-*" \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   192
			'-r[Recursively inherit property for all children]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   193
			'-S[Revert to received property value]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   194
			':property:_values -s , "property" $ro_properties $rw_properties' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   195
			'*:filesystem/volume:_zfs_dataset -t fs -t vol'
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   196
		;;
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   197
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   198
	("userspace"|"groupspace")
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   199
		_arguments -A "-*" \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   200
			'-n[Print numeric ID]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   201
			'-i[Translate SID to POSIX ID]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   202
			'-H[Tab-delimited output with no headers]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   203
			'-p[Parseable mode]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   204
			'-o[Properties to list]:property:_values -s , "property" type name used quota' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   205
			'*-s[Sort key (ascending)]:property:_values "property" type name used quota' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   206
			'*-S[Sort key (descending)]:property:_values "property" type name used quota' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   207
			'-t[Types to list]:type:_values -s , "type" all posixuser smbuser posixgroup smbgroup' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   208
			'*:filesystem/volume/snapshot:_zfs_dataset'
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   209
		;;
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   210
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   211
	("mount")
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   212
		_arguments -A "-*" \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   213
			'-o[Mount options]:mount options:_values -s , "option" {,no}{devices,exec,setuid} ro rw' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   214
			'-O[Overlay mount]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   215
			'-v[Report mount progress]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   216
			- set1 \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   217
			':filesystem:_zfs_dataset -t fs' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   218
			- set2 \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   219
			'-a[Mount all available ZFS filesystems]'
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   220
		;;
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   221
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   222
	("unmount")
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   223
		_arguments -A "-*" \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   224
			- set1 \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   225
			'-f[Force unmount]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   226
			':filesystem:_zfs_dataset -t fs -t mtpt' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   227
			- set2 \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   228
			'-a[Unmount all ZFS filesystems]'
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   229
		;;
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   230
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   231
	("share")
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   232
		_arguments -A "-*" \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   233
			- set1 \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   234
			'-a[Share all available ZFS filesystems]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   235
			- set2 \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   236
			':filesystem:_zfs_dataset -t fs'
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   237
		;;
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   238
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   239
	("unshare")
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   240
		_arguments -A "-*" \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   241
			- set1 \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   242
			'-a[Unshare all shared ZFS filesystems]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   243
			- set2 \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   244
			':filesystem:_zfs_dataset -t fs -t mtpt'
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   245
		;;
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   246
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   247
	("send")
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   248
		_arguments -A "-*" \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   249
			'-i[Generate an incremental stream]:snapshot:_zfs_dataset -t snap' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   250
			'-D[Perform dedup processing]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   251
			'-I[Generate an incremental stream with intermediary snapshots]:snapshot:_zfs_dataset -t snap' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   252
			'-p[Send properties]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   253
			'-R[Generate a replication stream package]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   254
			'-v[Verbose]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   255
			':snapshot:_zfs_dataset -t snap'
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   256
		;;
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   257
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   258
	("receive")
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   259
		_arguments -A "-*" \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   260
			'-v[Verbose]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   261
			'-n[Do not receive the stream]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   262
			'-F[Force a rollback if necessary]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   263
			'-u[Filesystem is not mounted]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   264
			- set1 \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   265
			':filesystem/volume/snapshot:_zfs_dataset' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   266
			- set2 \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   267
			'-d[Set path prefix]:filesystem:_zfs_dataset -t fs'
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   268
		;;
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   269
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   270
	("allow")
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   271
		_arguments -A "-*" \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   272
			- set1 \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   273
			':filesystem/volume:_zfs_dataset -t fs -t vol' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   274
			- set2 \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   275
			'(-g)-u[User]:user:_users' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   276
			'(-u)-g[Group]:group:_groups' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   277
			'-l[Allow for named dataset]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   278
			'-d[Allow for descendent datasets]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   279
			':permissions or sets:_values -s , "permission or set" $delegatable_perms' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   280
			':filesystem/volume:_zfs_dataset -t fs -t vol' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   281
			- set3 \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   282
			'-e[Everyone]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   283
			'-l[Allow for named dataset]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   284
			'-d[Allow for descendent datasets]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   285
			':permissions or sets:_values -s , "permission or set" $delegatable_perms' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   286
			':filesystem/volume:_zfs_dataset -t fs -t vol' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   287
			- set4 \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   288
			'-c[Create-time permissions]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   289
			':permissions or sets:_values -s , "permission or set" $delegatable_perms' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   290
			':filesystem/volume:_zfs_dataset -t fs -t vol' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   291
			- set5 \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   292
			'-s[Define or modify permission sets]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   293
			':setname:' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   294
			':permissions or sets:_values -s , "permission or set" $delegatable_perms' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   295
			':filesystem/volume:_zfs_dataset -t fs -t vol'
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   296
		;;
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   297
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   298
	("unallow")
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   299
		_arguments -A "-*" \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   300
			'-r[Recursive removal]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   301
			- set1 \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   302
			'-s[Remove permissions from or delete a permission set]:permission set:' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   303
			':permissions or sets:_values -s , "permission or set" $delegatable_perms' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   304
			':filesystem/volume:_zfs_dataset -t fs -t vol' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   305
			- set2 \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   306
			'(-g)-u[User]:user:_users' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   307
			'(-u)-g[Group]:group:_groups' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   308
			'-l[Allow for named dataset]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   309
			'-d[Allow for descendent datasets]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   310
			':permissions or sets:_values -s , "permission or set" $delegatable_perms' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   311
			':filesystem/volume:_zfs_dataset -t fs -t vol' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   312
			- set3 \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   313
			'-e[Everyone]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   314
			'-l[Allow for named dataset]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   315
			'-d[Allow for descendent datasets]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   316
			':permissions or sets:_values -s , "permission or set" $delegatable_perms' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   317
			':filesystem/volume:_zfs_dataset -t fs -t vol' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   318
			- set4 \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   319
			'-c[Create-time permissions]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   320
			':permissions or sets:_values -s , "permission or set" $delegatable_perms' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   321
			':filesystem/volume:_zfs_dataset -t fs -t vol'
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   322
		;;
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   323
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   324
	("upgrade")
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   325
		_arguments -A "-*" \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   326
			- set1 \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   327
			'-v[Verbose]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   328
			- set2 \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   329
			'-a[Upgrade all filesystems on all pools]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   330
			'-r[Upgrade descendent filesystems, too]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   331
			'-V[Upgrade to specified version]:version:(1 2)' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   332
			- set3 \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   333
			'-r[Upgrade descendent filesystems, too]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   334
			'-V[Upgrade to specified version]:version:(1 2)' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   335
			':filesystem:_zfs_dataset -t fs'
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   336
		;;
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   337
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   338
	("hold")
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   339
		_arguments -A "-*" \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   340
			'-r[Apply hold recursively]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   341
			':tag:' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   342
			':snapshot:_zfs_dataset -t snap'
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   343
		;;
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   344
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   345
	("holds")
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   346
		_arguments -A "-*" \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   347
			'-r[List holds recursively]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   348
			':snapshot:_zfs_dataset -t snap'
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   349
		;;
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   350
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   351
	("release")
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   352
		_arguments -A "-*" \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   353
			'-r[Release holds recursively]' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   354
			':tag:' \
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   355
			':snapshot:_zfs_dataset -t snap'
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   356
		;;
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   357
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   358
	(*)
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   359
		_message "unknown zfs subcommand: $service"
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   360
		;;
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   361
	esac
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   362
}
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   363
b579c7b1bb44 7016731 move zsh from sfw to userland
Danek Duvall <danek.duvall@oracle.com>
parents:
diff changeset
   364
_zfs "$@"