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 129