| 
									
										
										
										
											2012-08-09 16:31:51 +02:00
										 |  |  | # perf completion | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-10-03 00:21:32 +09:00
										 |  |  | function_exists() | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	declare -F $1 > /dev/null | 
					
						
							|  |  |  | 	return $? | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-10-04 14:23:54 +09:00
										 |  |  | function_exists __ltrim_colon_completions || | 
					
						
							|  |  |  | __ltrim_colon_completions() | 
					
						
							|  |  |  | { | 
					
						
							|  |  |  | 	if [[ "$1" == *:* && "$COMP_WORDBREAKS" == *:* ]]; then | 
					
						
							|  |  |  | 		# Remove colon-word prefix from COMPREPLY items | 
					
						
							|  |  |  | 		local colon_word=${1%${1##*:}} | 
					
						
							|  |  |  | 		local i=${#COMPREPLY[*]} | 
					
						
							|  |  |  | 		while [[ $((--i)) -ge 0 ]]; do | 
					
						
							|  |  |  | 			COMPREPLY[$i]=${COMPREPLY[$i]#"$colon_word"} | 
					
						
							|  |  |  | 		done | 
					
						
							|  |  |  | 	fi | 
					
						
							|  |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-08-09 16:31:51 +02:00
										 |  |  | have perf && | 
					
						
							|  |  |  | _perf() | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2012-10-03 00:21:32 +09:00
										 |  |  | 	local cur prev cmd | 
					
						
							| 
									
										
										
										
											2012-08-09 16:31:51 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	COMPREPLY=() | 
					
						
							| 
									
										
										
										
											2012-10-03 00:21:32 +09:00
										 |  |  | 	if function_exists _get_comp_words_by_ref; then | 
					
						
							| 
									
										
										
										
											2012-10-04 14:23:54 +09:00
										 |  |  | 		_get_comp_words_by_ref -n : cur prev | 
					
						
							| 
									
										
										
										
											2012-10-03 00:21:32 +09:00
										 |  |  | 	else | 
					
						
							| 
									
										
										
										
											2012-10-04 14:23:54 +09:00
										 |  |  | 		cur=$(_get_cword :) | 
					
						
							| 
									
										
										
										
											2012-10-03 00:21:32 +09:00
										 |  |  | 		prev=${COMP_WORDS[COMP_CWORD-1]} | 
					
						
							|  |  |  | 	fi | 
					
						
							| 
									
										
										
										
											2012-08-09 16:31:51 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	cmd=${COMP_WORDS[0]} | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2012-10-03 00:21:33 +09:00
										 |  |  | 	# List perf subcommands or long options | 
					
						
							| 
									
										
										
										
											2012-08-09 16:31:51 +02:00
										 |  |  | 	if [ $COMP_CWORD -eq 1 ]; then | 
					
						
							| 
									
										
										
										
											2012-10-03 00:21:33 +09:00
										 |  |  | 		if [[ $cur == --* ]]; then | 
					
						
							|  |  |  | 			COMPREPLY=( $( compgen -W '--help --version \
 | 
					
						
							|  |  |  | 			--exec-path --html-path --paginate --no-pager \
 | 
					
						
							|  |  |  | 			--perf-dir --work-tree --debugfs-dir' -- "$cur" ) ) | 
					
						
							|  |  |  | 		else | 
					
						
							|  |  |  | 			cmds=$($cmd --list-cmds) | 
					
						
							|  |  |  | 			COMPREPLY=( $( compgen -W '$cmds' -- "$cur" ) ) | 
					
						
							|  |  |  | 		fi | 
					
						
							| 
									
										
										
										
											2012-08-09 16:31:52 +02:00
										 |  |  | 	# List possible events for -e option | 
					
						
							|  |  |  | 	elif [[ $prev == "-e" && "${COMP_WORDS[1]}" == @(record|stat|top) ]]; then | 
					
						
							| 
									
										
										
										
											2012-10-03 00:21:34 +09:00
										 |  |  | 		evts=$($cmd list --raw-dump) | 
					
						
							|  |  |  | 		COMPREPLY=( $( compgen -W '$evts' -- "$cur" ) ) | 
					
						
							| 
									
										
										
										
											2012-10-04 14:23:54 +09:00
										 |  |  | 		__ltrim_colon_completions $cur | 
					
						
							| 
									
										
										
										
											2012-10-03 00:21:34 +09:00
										 |  |  | 	# List long option names | 
					
						
							|  |  |  | 	elif [[ $cur == --* ]];  then | 
					
						
							|  |  |  | 		subcmd=${COMP_WORDS[1]} | 
					
						
							|  |  |  | 		opts=$($cmd $subcmd --list-opts) | 
					
						
							|  |  |  | 		COMPREPLY=( $( compgen -W '$opts' -- "$cur" ) ) | 
					
						
							| 
									
										
										
										
											2012-08-09 16:31:51 +02:00
										 |  |  | 	# Fall down to list regular files | 
					
						
							|  |  |  | 	else | 
					
						
							|  |  |  | 		_filedir | 
					
						
							|  |  |  | 	fi | 
					
						
							|  |  |  | } && | 
					
						
							|  |  |  | complete -F _perf perf |