Merge tag 'selinux-pr-20190726' of git://git.kernel.org/pub/scm/linux/kernel/git...
[linux-2.6-block.git] / tools / power / cpupower / cpupower-completion.sh
CommitLineData
901d32bc
AG
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