162306a36Sopenharmony_ci# -*- shell-script -*-
262306a36Sopenharmony_ci# bash completion script for cpupower
362306a36Sopenharmony_ci# Taken from git.git's completion script.
462306a36Sopenharmony_ci
562306a36Sopenharmony_ci_cpupower_commands="frequency-info frequency-set idle-info idle-set set info monitor"
662306a36Sopenharmony_ci
762306a36Sopenharmony_ci_frequency_info ()
862306a36Sopenharmony_ci{
962306a36Sopenharmony_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"
1062306a36Sopenharmony_ci	local prev="${COMP_WORDS[COMP_CWORD-1]}"
1162306a36Sopenharmony_ci	local cur="${COMP_WORDS[COMP_CWORD]}"
1262306a36Sopenharmony_ci	case "$prev" in
1362306a36Sopenharmony_ci		frequency-info) COMPREPLY=($(compgen -W "$flags" -- "$cur")) ;;
1462306a36Sopenharmony_ci	esac
1562306a36Sopenharmony_ci}
1662306a36Sopenharmony_ci
1762306a36Sopenharmony_ci_frequency_set ()
1862306a36Sopenharmony_ci{
1962306a36Sopenharmony_ci	local flags="-f -g --freq --governor -d --min -u --max -r --related"
2062306a36Sopenharmony_ci	local prev="${COMP_WORDS[COMP_CWORD-1]}"
2162306a36Sopenharmony_ci	local cur="${COMP_WORDS[COMP_CWORD]}"
2262306a36Sopenharmony_ci	case "$prev" in
2362306a36Sopenharmony_ci		-f| --freq | -d | --min | -u | --max)
2462306a36Sopenharmony_ci		if [ -d /sys/devices/system/cpu/cpufreq/ ] ; then
2562306a36Sopenharmony_ci			COMPREPLY=($(compgen -W '$(cat $(ls -d /sys/devices/system/cpu/cpufreq/policy* | head -1)/scaling_available_frequencies)' -- "$cur"))
2662306a36Sopenharmony_ci		fi ;;
2762306a36Sopenharmony_ci		-g| --governor)
2862306a36Sopenharmony_ci		if [ -d /sys/devices/system/cpu/cpufreq/ ] ; then
2962306a36Sopenharmony_ci			COMPREPLY=($(compgen -W '$(cat $(ls -d /sys/devices/system/cpu/cpufreq/policy* | head -1)/scaling_available_governors)' -- "$cur"))
3062306a36Sopenharmony_ci		fi;;
3162306a36Sopenharmony_ci		frequency-set) COMPREPLY=($(compgen -W "$flags" -- "$cur")) ;;
3262306a36Sopenharmony_ci	esac
3362306a36Sopenharmony_ci}
3462306a36Sopenharmony_ci
3562306a36Sopenharmony_ci_idle_info()
3662306a36Sopenharmony_ci{
3762306a36Sopenharmony_ci	local flags="-f --silent"
3862306a36Sopenharmony_ci	local prev="${COMP_WORDS[COMP_CWORD-1]}"
3962306a36Sopenharmony_ci	local cur="${COMP_WORDS[COMP_CWORD]}"
4062306a36Sopenharmony_ci	case "$prev" in
4162306a36Sopenharmony_ci		idle-info) COMPREPLY=($(compgen -W "$flags" -- "$cur")) ;;
4262306a36Sopenharmony_ci	esac
4362306a36Sopenharmony_ci}
4462306a36Sopenharmony_ci
4562306a36Sopenharmony_ci_idle_set()
4662306a36Sopenharmony_ci{
4762306a36Sopenharmony_ci	local flags="-d --disable -e --enable -D --disable-by-latency -E --enable-all"
4862306a36Sopenharmony_ci	local prev="${COMP_WORDS[COMP_CWORD-1]}"
4962306a36Sopenharmony_ci	local cur="${COMP_WORDS[COMP_CWORD]}"
5062306a36Sopenharmony_ci	case "$prev" in
5162306a36Sopenharmony_ci		idle-set) COMPREPLY=($(compgen -W "$flags" -- "$cur")) ;;
5262306a36Sopenharmony_ci	esac
5362306a36Sopenharmony_ci}
5462306a36Sopenharmony_ci
5562306a36Sopenharmony_ci_set()
5662306a36Sopenharmony_ci{
5762306a36Sopenharmony_ci	local flags="--perf-bias, -b"
5862306a36Sopenharmony_ci	local prev="${COMP_WORDS[COMP_CWORD-1]}"
5962306a36Sopenharmony_ci	local cur="${COMP_WORDS[COMP_CWORD]}"
6062306a36Sopenharmony_ci	case "$prev" in
6162306a36Sopenharmony_ci		set) COMPREPLY=($(compgen -W "$flags" -- "$cur")) ;;
6262306a36Sopenharmony_ci	esac
6362306a36Sopenharmony_ci}
6462306a36Sopenharmony_ci
6562306a36Sopenharmony_ci_monitor()
6662306a36Sopenharmony_ci{
6762306a36Sopenharmony_ci	local flags="-l -m -i -c -v"
6862306a36Sopenharmony_ci	local prev="${COMP_WORDS[COMP_CWORD-1]}"
6962306a36Sopenharmony_ci	local cur="${COMP_WORDS[COMP_CWORD]}"
7062306a36Sopenharmony_ci	case "$prev" in
7162306a36Sopenharmony_ci		monitor) COMPREPLY=($(compgen -W "$flags" -- "$cur")) ;;
7262306a36Sopenharmony_ci	esac
7362306a36Sopenharmony_ci}
7462306a36Sopenharmony_ci
7562306a36Sopenharmony_ci_taskset()
7662306a36Sopenharmony_ci{
7762306a36Sopenharmony_ci	local prev_to_prev="${COMP_WORDS[COMP_CWORD-2]}"
7862306a36Sopenharmony_ci	local prev="${COMP_WORDS[COMP_CWORD-1]}"
7962306a36Sopenharmony_ci	local cur="${COMP_WORDS[COMP_CWORD]}"
8062306a36Sopenharmony_ci	case "$prev_to_prev" in
8162306a36Sopenharmony_ci		-c|--cpu) COMPREPLY=($(compgen -W "$_cpupower_commands" -- "$cur")) ;;
8262306a36Sopenharmony_ci	esac
8362306a36Sopenharmony_ci	case "$prev" in
8462306a36Sopenharmony_ci		frequency-info) _frequency_info ;;
8562306a36Sopenharmony_ci		frequency-set) _frequency_set ;;
8662306a36Sopenharmony_ci		idle-info) _idle_info ;;
8762306a36Sopenharmony_ci		idle-set) _idle_set ;;
8862306a36Sopenharmony_ci		set) _set ;;
8962306a36Sopenharmony_ci		monitor) _monitor ;;
9062306a36Sopenharmony_ci	esac
9162306a36Sopenharmony_ci
9262306a36Sopenharmony_ci}
9362306a36Sopenharmony_ci
9462306a36Sopenharmony_ci_cpupower ()
9562306a36Sopenharmony_ci{
9662306a36Sopenharmony_ci	local i
9762306a36Sopenharmony_ci	local c=1
9862306a36Sopenharmony_ci	local command
9962306a36Sopenharmony_ci
10062306a36Sopenharmony_ci	while test $c -lt $COMP_CWORD; do
10162306a36Sopenharmony_ci		if test $c == 1; then
10262306a36Sopenharmony_ci			command="${COMP_WORDS[c]}"
10362306a36Sopenharmony_ci		fi
10462306a36Sopenharmony_ci		c=$((++c))
10562306a36Sopenharmony_ci	done
10662306a36Sopenharmony_ci
10762306a36Sopenharmony_ci	# Complete name of subcommand if the user has not finished typing it yet.
10862306a36Sopenharmony_ci	if test $c -eq $COMP_CWORD -a -z "$command"; then
10962306a36Sopenharmony_ci		COMPREPLY=($(compgen -W "help -v --version -c --cpu $_cpupower_commands" -- "${COMP_WORDS[COMP_CWORD]}"))
11062306a36Sopenharmony_ci		return
11162306a36Sopenharmony_ci	fi
11262306a36Sopenharmony_ci
11362306a36Sopenharmony_ci	# Complete arguments to subcommands.
11462306a36Sopenharmony_ci	case "$command" in
11562306a36Sopenharmony_ci		-v|--version) return ;;
11662306a36Sopenharmony_ci		-c|--cpu) _taskset ;;
11762306a36Sopenharmony_ci		help) COMPREPLY=($(compgen -W "$_cpupower_commands" -- "${COMP_WORDS[COMP_CWORD]}")) ;;
11862306a36Sopenharmony_ci		frequency-info) _frequency_info ;;
11962306a36Sopenharmony_ci		frequency-set) _frequency_set ;;
12062306a36Sopenharmony_ci		idle-info) _idle_info ;;
12162306a36Sopenharmony_ci		idle-set) _idle_set ;;
12262306a36Sopenharmony_ci		set) _set ;;
12362306a36Sopenharmony_ci		monitor) _monitor ;;
12462306a36Sopenharmony_ci	esac
12562306a36Sopenharmony_ci}
12662306a36Sopenharmony_ci
12762306a36Sopenharmony_cicomplete -o bashdefault -o default -F _cpupower cpupower 2>/dev/null \
12862306a36Sopenharmony_ci    || complete -o default -F _cpupower cpupower
129