File Index
Files and directories
Sign in
FILE

cpupower-completion.sh

File preview with syntax highlighting.

linux-6.19.14/tools/power/cpupower/cpupower-completion.sh BASH
  1# -*- shell-script -*-
  2# bash completion script for cpupower
  3# Taken from git.git's completion script.
  4
  5_cpupower_commands="frequency-info frequency-set idle-info idle-set set info monitor"
  6
  7_frequency_info ()
  8{
  9	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"
 10	local prev="${COMP_WORDS[COMP_CWORD-1]}"
 11	local cur="${COMP_WORDS[COMP_CWORD]}"
 12	case "$prev" in
 13		frequency-info) COMPREPLY=($(compgen -W "$flags" -- "$cur")) ;;
 14	esac
 15}
 16
 17_frequency_set ()
 18{
 19	local flags="-f -g --freq --governor -d --min -u --max -r --related"
 20	local prev="${COMP_WORDS[COMP_CWORD-1]}"
 21	local cur="${COMP_WORDS[COMP_CWORD]}"
 22	case "$prev" in
 23		-f| --freq | -d | --min | -u | --max)
 24		if [ -d /sys/devices/system/cpu/cpufreq/ ] ; then
 25			COMPREPLY=($(compgen -W '$(cat $(ls -d /sys/devices/system/cpu/cpufreq/policy* | head -1)/scaling_available_frequencies)' -- "$cur"))
 26		fi ;;
 27		-g| --governor)
 28		if [ -d /sys/devices/system/cpu/cpufreq/ ] ; then
 29			COMPREPLY=($(compgen -W '$(cat $(ls -d /sys/devices/system/cpu/cpufreq/policy* | head -1)/scaling_available_governors)' -- "$cur"))
 30		fi;;
 31		frequency-set) COMPREPLY=($(compgen -W "$flags" -- "$cur")) ;;
 32	esac
 33}
 34
 35_idle_info()
 36{
 37	local flags="-f --silent"
 38	local prev="${COMP_WORDS[COMP_CWORD-1]}"
 39	local cur="${COMP_WORDS[COMP_CWORD]}"
 40	case "$prev" in
 41		idle-info) COMPREPLY=($(compgen -W "$flags" -- "$cur")) ;;
 42	esac
 43}
 44
 45_idle_set()
 46{
 47	local flags="-d --disable -e --enable -D --disable-by-latency -E --enable-all"
 48	local prev="${COMP_WORDS[COMP_CWORD-1]}"
 49	local cur="${COMP_WORDS[COMP_CWORD]}"
 50	case "$prev" in
 51		idle-set) COMPREPLY=($(compgen -W "$flags" -- "$cur")) ;;
 52	esac
 53}
 54
 55_set()
 56{
 57	local flags="--perf-bias, -b"
 58	local prev="${COMP_WORDS[COMP_CWORD-1]}"
 59	local cur="${COMP_WORDS[COMP_CWORD]}"
 60	case "$prev" in
 61		set) COMPREPLY=($(compgen -W "$flags" -- "$cur")) ;;
 62	esac
 63}
 64
 65_monitor()
 66{
 67	local flags="-l -m -i -c -v"
 68	local prev="${COMP_WORDS[COMP_CWORD-1]}"
 69	local cur="${COMP_WORDS[COMP_CWORD]}"
 70	case "$prev" in
 71		monitor) COMPREPLY=($(compgen -W "$flags" -- "$cur")) ;;
 72	esac
 73}
 74
 75_taskset()
 76{
 77	local prev_to_prev="${COMP_WORDS[COMP_CWORD-2]}"
 78	local prev="${COMP_WORDS[COMP_CWORD-1]}"
 79	local cur="${COMP_WORDS[COMP_CWORD]}"
 80	case "$prev_to_prev" in
 81		-c|--cpu) COMPREPLY=($(compgen -W "$_cpupower_commands" -- "$cur")) ;;
 82	esac
 83	case "$prev" in
 84		frequency-info) _frequency_info ;;
 85		frequency-set) _frequency_set ;;
 86		idle-info) _idle_info ;;
 87		idle-set) _idle_set ;;
 88		set) _set ;;
 89		monitor) _monitor ;;
 90	esac
 91
 92}
 93
 94_cpupower ()
 95{
 96	local i
 97	local c=1
 98	local command
 99
100	while test $c -lt $COMP_CWORD; do
101		if test $c == 1; then
102			command="${COMP_WORDS[c]}"
103		fi
104		c=$((++c))
105	done
106
107	# Complete name of subcommand if the user has not finished typing it yet.
108	if test $c -eq $COMP_CWORD -a -z "$command"; then
109		COMPREPLY=($(compgen -W "help -v --version -c --cpu $_cpupower_commands" -- "${COMP_WORDS[COMP_CWORD]}"))
110		return
111	fi
112
113	# Complete arguments to subcommands.
114	case "$command" in
115		-v|--version) return ;;
116		-c|--cpu) _taskset ;;
117		help) COMPREPLY=($(compgen -W "$_cpupower_commands" -- "${COMP_WORDS[COMP_CWORD]}")) ;;
118		frequency-info) _frequency_info ;;
119		frequency-set) _frequency_set ;;
120		idle-info) _idle_info ;;
121		idle-set) _idle_set ;;
122		set) _set ;;
123		monitor) _monitor ;;
124	esac
125}
126
127complete -o bashdefault -o default -F _cpupower cpupower 2>/dev/null \
128    || complete -o default -F _cpupower cpupower
~/ Read-only file preview.