zsh-workers
 help / color / mirror / code / Atom feed
360fc20917a9a11afca8090a19c4f752f5c3a7ae blob 2119 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
 
#compdef svccfg

_svccfg_properties() {
	local -a props fmris
	local fmri="$argv[$#]"

	# If There's more than one possible FMRI, bail
	fmris=( ${(f)"$(svcs -H -o fmri $fmri)"} )
	if [[ $#fmris -gt 1 ]]; then
		_message "'$fmri' is ambiguous"
		return 1
	fi

	# Get all the property names for the FMRI
	props=( ${${${(f)"$(svccfg -s $fmri describe)"}:# *}%% *} )

	_multi_parts "$@" - / props
}

_svccfg() {
	local context state line subcmds
	typeset -A opt_args

	# Subcommands that don't make sense on the commandline are missing
	subcmds=(
		apply export extract import inventory validate
		add delete list
		addpg addpropvalue delcust delpg delprop delpropvalue describe 
		editprop listpg listprop listcust setenv setprop unsetenv
		setnotify listnotify delnotify
		listsnap revert selectsnap
		refresh
	)

	if [[ $service == "svccfg" ]]; then
		_arguments -s \
			'-?[help]' \
			'-v[verbose]' \
			'-s[FMRI on which to operate]:fmri:_svcs_fmri -c' \
			- set1 \
			'-f[read commands from file]:command file:_files' \
			- set2 \
			'*::command:->subcmd' && return 0

		if (( CURRENT == 1 )); then
			_wanted commands expl 'svccfg subcommand' compadd -a subcmds
			return
		fi
		service="$words[1]"
		curcontext="${curcontext%:*}=$service:"
	fi

	case $service in
	(import)
		_arguments \
			'-V[verify property updates]' \
			':file:_files'
		;;

	(apply|inventory)
		_files
		;;

	(validate)
		_alternative 'files:file:_files' 'fmris:fmri:_svcs_fmri -c'
		;;

	(export)
		_svcs_fmri -c
		;;

	(delete)
		_arguments \
			'-f[force deletion if online or degraded]' \
			'*:FMRI:_svcs_fmri -c'
		;;

	(describe)
		local fmri=$opt_args[-s]
		_arguments -A "-*" \
			'-v[give all information]' \
			'-t[show only template data]' \
			":property group or property:_svccfg_properties $fmri"
		;;

	(extract|add|delete|list|addpg|addpropvalue|delcust|delpg|delprop)
		;;

	(delpropvalue|editprop|listpg|listprop|listcust|setenv|setprop|unsetenv)
		;;

	(setnotify|listnotify|delnotify|listsnap|revert|selectsnap|refresh)
		;;

	(*)
		_message "unknown svccfg subcommand: $service"
		;;
	esac
}

_svccfg "$@"

# vi:tw=0
debug log:

solving 360fc2091 ...
found 360fc2091 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).