18c2ecf20Sopenharmony_ci# -*- shell-script -*-
28c2ecf20Sopenharmony_ci# bash completion script for cpupower
38c2ecf20Sopenharmony_ci# Taken from git.git's completion script.
48c2ecf20Sopenharmony_ci
58c2ecf20Sopenharmony_ci_cpupower_commands="frequency-info frequency-set idle-info idle-set set info monitor"
68c2ecf20Sopenharmony_ci
78c2ecf20Sopenharmony_ci_frequency_info ()
88c2ecf20Sopenharmony_ci{
98c2ecf20Sopenharmony_ci	local flags="-f -w -l -d -p -g -a -s -y -o -m -n --freq --hwfreq --hwlimits --driver --policy --governors --related-cpus --affected-cpus --stats --latency --proc --human --no-rounding"
108c2ecf20Sopenharmony_ci	local prev="${COMP_WORDS[COMP_CWORD-1]}"
118c2ecf20Sopenharmony_ci	local cur="${COMP_WORDS[COMP_CWORD]}"
128c2ecf20Sopenharmony_ci	case "$prev" in
138c2ecf20Sopenharmony_ci		frequency-info) COMPREPLY=($(compgen -W "$flags" -- "$cur")) ;;
148c2ecf20Sopenharmony_ci	esac
158c2ecf20Sopenharmony_ci}
168c2ecf20Sopenharmony_ci
178c2ecf20Sopenharmony_ci_frequency_set ()
188c2ecf20Sopenharmony_ci{
198c2ecf20Sopenharmony_ci	local flags="-f -g --freq --governor -d --min -u --max -r --related"
208c2ecf20Sopenharmony_ci	local prev="${COMP_WORDS[COMP_CWORD-1]}"
218c2ecf20Sopenharmony_ci	local cur="${COMP_WORDS[COMP_CWORD]}"
228c2ecf20Sopenharmony_ci	case "$prev" in
238c2ecf20Sopenharmony_ci		-f| --freq | -d | --min | -u | --max)
248c2ecf20Sopenharmony_ci		if [ -d /sys/devices/system/cpu/cpufreq/ ] ; then
258c2ecf20Sopenharmony_ci			COMPREPLY=($(compgen -W '$(cat $(ls -d /sys/devices/system/cpu/cpufreq/policy* | head -1)/scaling_available_frequencies)' -- "$cur"))
268c2ecf20Sopenharmony_ci		fi ;;
278c2ecf20Sopenharmony_ci		-g| --governor)
288c2ecf20Sopenharmony_ci		if [ -d /sys/devices/system/cpu/cpufreq/ ] ; then
298c2ecf20Sopenharmony_ci			COMPREPLY=($(compgen -W '$(cat $(ls -d /sys/devices/system/cpu/cpufreq/policy* | head -1)/scaling_available_governors)' -- "$cur"))
308c2ecf20Sopenharmony_ci		fi;;
318c2ecf20Sopenharmony_ci		frequency-set) COMPREPLY=($(compgen -W "$flags" -- "$cur")) ;;
328c2ecf20Sopenharmony_ci	esac
338c2ecf20Sopenharmony_ci}
348c2ecf20Sopenharmony_ci
358c2ecf20Sopenharmony_ci_idle_info()
368c2ecf20Sopenharmony_ci{
378c2ecf20Sopenharmony_ci	local flags="-f --silent"
388c2ecf20Sopenharmony_ci	local prev="${COMP_WORDS[COMP_CWORD-1]}"
398c2ecf20Sopenharmony_ci	local cur="${COMP_WORDS[COMP_CWORD]}"
408c2ecf20Sopenharmony_ci	case "$prev" in
418c2ecf20Sopenharmony_ci		idle-info) COMPREPLY=($(compgen -W "$flags" -- "$cur")) ;;
428c2ecf20Sopenharmony_ci	esac
438c2ecf20Sopenharmony_ci}
448c2ecf20Sopenharmony_ci
458c2ecf20Sopenharmony_ci_idle_set()
468c2ecf20Sopenharmony_ci{
478c2ecf20Sopenharmony_ci	local flags="-d --disable -e --enable -D --disable-by-latency -E --enable-all"
488c2ecf20Sopenharmony_ci	local prev="${COMP_WORDS[COMP_CWORD-1]}"
498c2ecf20Sopenharmony_ci	local cur="${COMP_WORDS[COMP_CWORD]}"
508c2ecf20Sopenharmony_ci	case "$prev" in
518c2ecf20Sopenharmony_ci		idle-set) COMPREPLY=($(compgen -W "$flags" -- "$cur")) ;;
528c2ecf20Sopenharmony_ci	esac
538c2ecf20Sopenharmony_ci}
548c2ecf20Sopenharmony_ci
558c2ecf20Sopenharmony_ci_set()
568c2ecf20Sopenharmony_ci{
578c2ecf20Sopenharmony_ci	local flags="--perf-bias, -b"
588c2ecf20Sopenharmony_ci	local prev="${COMP_WORDS[COMP_CWORD-1]}"
598c2ecf20Sopenharmony_ci	local cur="${COMP_WORDS[COMP_CWORD]}"
608c2ecf20Sopenharmony_ci	case "$prev" in
618c2ecf20Sopenharmony_ci		set) COMPREPLY=($(compgen -W "$flags" -- "$cur")) ;;
628c2ecf20Sopenharmony_ci	esac
638c2ecf20Sopenharmony_ci}
648c2ecf20Sopenharmony_ci
658c2ecf20Sopenharmony_ci_monitor()
668c2ecf20Sopenharmony_ci{
678c2ecf20Sopenharmony_ci	local flags="-l -m -i -c -v"
688c2ecf20Sopenharmony_ci	local prev="${COMP_WORDS[COMP_CWORD-1]}"
698c2ecf20Sopenharmony_ci	local cur="${COMP_WORDS[COMP_CWORD]}"
708c2ecf20Sopenharmony_ci	case "$prev" in
718c2ecf20Sopenharmony_ci		monitor) COMPREPLY=($(compgen -W "$flags" -- "$cur")) ;;
728c2ecf20Sopenharmony_ci	esac
738c2ecf20Sopenharmony_ci}
748c2ecf20Sopenharmony_ci
758c2ecf20Sopenharmony_ci_taskset()
768c2ecf20Sopenharmony_ci{
778c2ecf20Sopenharmony_ci	local prev_to_prev="${COMP_WORDS[COMP_CWORD-2]}"
788c2ecf20Sopenharmony_ci	local prev="${COMP_WORDS[COMP_CWORD-1]}"
798c2ecf20Sopenharmony_ci	local cur="${COMP_WORDS[COMP_CWORD]}"
808c2ecf20Sopenharmony_ci	case "$prev_to_prev" in
818c2ecf20Sopenharmony_ci		-c|--cpu) COMPREPLY=($(compgen -W "$_cpupower_commands" -- "$cur")) ;;
828c2ecf20Sopenharmony_ci	esac
838c2ecf20Sopenharmony_ci	case "$prev" in
848c2ecf20Sopenharmony_ci		frequency-info) _frequency_info ;;
858c2ecf20Sopenharmony_ci		frequency-set) _frequency_set ;;
868c2ecf20Sopenharmony_ci		idle-info) _idle_info ;;
878c2ecf20Sopenharmony_ci		idle-set) _idle_set ;;
888c2ecf20Sopenharmony_ci		set) _set ;;
898c2ecf20Sopenharmony_ci		monitor) _monitor ;;
908c2ecf20Sopenharmony_ci	esac
918c2ecf20Sopenharmony_ci
928c2ecf20Sopenharmony_ci}
938c2ecf20Sopenharmony_ci
948c2ecf20Sopenharmony_ci_cpupower ()
958c2ecf20Sopenharmony_ci{
968c2ecf20Sopenharmony_ci	local i
978c2ecf20Sopenharmony_ci	local c=1
988c2ecf20Sopenharmony_ci	local command
998c2ecf20Sopenharmony_ci
1008c2ecf20Sopenharmony_ci	while test $c -lt $COMP_CWORD; do
1018c2ecf20Sopenharmony_ci		if test $c == 1; then
1028c2ecf20Sopenharmony_ci			command="${COMP_WORDS[c]}"
1038c2ecf20Sopenharmony_ci		fi
1048c2ecf20Sopenharmony_ci		c=$((++c))
1058c2ecf20Sopenharmony_ci	done
1068c2ecf20Sopenharmony_ci
1078c2ecf20Sopenharmony_ci	# Complete name of subcommand if the user has not finished typing it yet.
1088c2ecf20Sopenharmony_ci	if test $c -eq $COMP_CWORD -a -z "$command"; then
1098c2ecf20Sopenharmony_ci		COMPREPLY=($(compgen -W "help -v --version -c --cpu $_cpupower_commands" -- "${COMP_WORDS[COMP_CWORD]}"))
1108c2ecf20Sopenharmony_ci		return
1118c2ecf20Sopenharmony_ci	fi
1128c2ecf20Sopenharmony_ci
1138c2ecf20Sopenharmony_ci	# Complete arguments to subcommands.
1148c2ecf20Sopenharmony_ci	case "$command" in
1158c2ecf20Sopenharmony_ci		-v|--version) return ;;
1168c2ecf20Sopenharmony_ci		-c|--cpu) _taskset ;;
1178c2ecf20Sopenharmony_ci		help) COMPREPLY=($(compgen -W "$_cpupower_commands" -- "${COMP_WORDS[COMP_CWORD]}")) ;;
1188c2ecf20Sopenharmony_ci		frequency-info) _frequency_info ;;
1198c2ecf20Sopenharmony_ci		frequency-set) _frequency_set ;;
1208c2ecf20Sopenharmony_ci		idle-info) _idle_info ;;
1218c2ecf20Sopenharmony_ci		idle-set) _idle_set ;;
1228c2ecf20Sopenharmony_ci		set) _set ;;
1238c2ecf20Sopenharmony_ci		monitor) _monitor ;;
1248c2ecf20Sopenharmony_ci	esac
1258c2ecf20Sopenharmony_ci}
1268c2ecf20Sopenharmony_ci
1278c2ecf20Sopenharmony_cicomplete -o bashdefault -o default -F _cpupower cpupower 2>/dev/null \
1288c2ecf20Sopenharmony_ci    || complete -o default -F _cpupower cpupower
129