zsh-workers
 help / color / mirror / code / Atom feed
f0a45a1b8f3579cc68444750676b8a23408c63aa blob 3430 bytes (raw)

  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 Solaris 11 build 168 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 "-*" \
			':"incomplete":_values \"incomplete\" incomplete'
		;;

	("move")
		_arguments -A "-*" \
			':new zone path:_path_files -/'
		;;

	("uninstall")
		_arguments -A "-*" \
			'-F[Force]'
		;;
	esac
}

_zoneadm "$@"
debug log:

solving f0a45a1 ...
found f0a45a1 in https://git.vuxu.org/mirror/zsh/

Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).