Merge tag 'block-5.10-2020-11-20' of git://git.kernel.dk/linux-block
[linux-2.6-microblaze.git] / tools / power / cpupower / cpupower-completion.sh
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
127 complete -o bashdefault -o default -F _cpupower cpupower 2>/dev/null \
128     || complete -o default -F _cpupower cpupower