mirror of
				git://git.code.sf.net/p/zsh/code
				synced 2025-10-31 06:00:54 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			111 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			111 lines
		
	
	
	
		
			2.3 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| #compdef fmadm
 | |
| # Synced with the Nevada build 168 man page
 | |
| 
 | |
| _fm_modules() {
 | |
| 	compadd "$@" - $(fmadm config 2> /dev/null | awk 'NR == 1 {continue} {print $1}')
 | |
| }
 | |
| 
 | |
| _fm_faulted_fmris() {
 | |
| 	compadd "$@" - $(fmadm faulty -r 2> /dev/null | awk '{print $1}')
 | |
| }
 | |
| 
 | |
| _fm_faulted_uuids() {
 | |
| 	compadd "$@" - $(fmadm faulty -s 2> /dev/null | tail +4 | awk '{print $4}')
 | |
| }
 | |
| 
 | |
| _fm_faulted_labels() {
 | |
| 	local q='"'
 | |
| 	compadd "$@" - $(fmadm faulty -f 2> /dev/null | while read line; do
 | |
| 		if [[ $line == "----"* ]]; then
 | |
| 			read line
 | |
| 			if [[ $line == '"'* ]]; then
 | |
| 				print ${${line[(r)$q,(rn:2:)$q]}[2,-2]}
 | |
| 			fi
 | |
| 		fi
 | |
| 	done)
 | |
| }
 | |
| 
 | |
| _fmadm() {
 | |
| 	local context state line expl
 | |
| 	local -A opt_args
 | |
| 	local -a subcmds
 | |
| 
 | |
| 	# TODO: lookup-alias and remove-alias need completion based on the
 | |
| 	# output of list-alias, but I have no examples of that output.
 | |
| 
 | |
| 	subcmds=(
 | |
| 		"acquit" "config" "faulty" "flush" "load" "unload"
 | |
| 		"repaired" "replaced" "reset" "rotate"
 | |
| 		"add-alias" "remove-alias" "lookup-alias" "list-alias" "sync-alias"
 | |
| 	)
 | |
| 
 | |
| 	if [[ $service == "fmadm" ]]; then
 | |
| 		_arguments -C -A "-*" \
 | |
| 			'-q[Quite mode]' \
 | |
| 			'*::command:->subcmd' && return 0
 | |
| 
 | |
| 		if (( CURRENT == 1 )); then
 | |
| 			_wanted commands expl "fmadm subcommand" compadd -a subcmds
 | |
| 			return
 | |
| 		fi
 | |
| 		service="$words[1]"
 | |
| 		curcontext="${curcontext%:*}=$service:"
 | |
| 	fi
 | |
| 
 | |
| 	case $service in
 | |
| 	("acquit")
 | |
| 		_alternative \
 | |
| 			"fmadm-acquit-label:label:_fm_faulted_labels" \
 | |
| 			"fmadm-acquit-uuid:uuid:_fm_faulted_uuids" \
 | |
| 			"fmadm-acquit-fmri:fmri:_fm_faulted_fmris"
 | |
| 		;;
 | |
| 
 | |
| 	("config")
 | |
| 		;;
 | |
| 
 | |
| 	("faulty")
 | |
| 		_arguments -A "-*" \
 | |
| 			'-a[Display all faults]' \
 | |
| 			'-f[Display faulty FRUs]' \
 | |
| 			'-g[Group faults]' \
 | |
| 			'-i[Display persistent cache IDs]' \
 | |
| 			'-n[Limit output to n entries]:number:' \
 | |
| 			'-p[Page output]' \
 | |
| 			'-r[Display resources]' \
 | |
| 			'-s[Display one-line summaries]' \
 | |
| 			'-u[Only display fault with given uuid]:uuid:_fm_faulted_uuids' \
 | |
| 			'-v[Display full output]'
 | |
| 		;;
 | |
| 
 | |
| 	("flush")
 | |
| 		_fm_faulted_fmris
 | |
| 		;;
 | |
| 
 | |
| 	("load")
 | |
| 		_path_files -g "/*"
 | |
| 		;;
 | |
| 
 | |
| 	("unload")
 | |
| 		_fm_modules
 | |
| 		;;
 | |
| 
 | |
| 	("repaired"|"replaced")
 | |
| 		_alternative \
 | |
| 			"fmadm-acquit-label:label:_fm_faulted_labels" \
 | |
| 			"fmadm-acquit-fmri:fmri:_fm_faulted_fmris"
 | |
| 		;;
 | |
| 
 | |
| 	("reset")
 | |
| 		_arguments -A "-*" \
 | |
| 			'-s[Reset named SERD]:serd:' \
 | |
| 			':module:_fm_modules'
 | |
| 		;;
 | |
| 
 | |
| 	("rotate")
 | |
| 		_values "logfile" "errlog" "fltlog" "infolog" "infolog_hival"
 | |
| 		;;
 | |
| 
 | |
| 	esac
 | |
| }
 | |
| 
 | |
| _fmadm "$@"
 |