| # -*- shell-script -*- |
| # bash completion script for cpupower |
| # Taken from git.git's completion script. |
| |
| _cpupower_commands="frequency-info frequency-set idle-info idle-set set info monitor" |
| |
| _frequency_info () |
| { |
| 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" |
| local prev="${COMP_WORDS[COMP_CWORD-1]}" |
| local cur="${COMP_WORDS[COMP_CWORD]}" |
| case "$prev" in |
| frequency-info) COMPREPLY=($(compgen -W "$flags" -- "$cur")) ;; |
| esac |
| } |
| |
| _frequency_set () |
| { |
| local flags="-f -g --freq --governor -d --min -u --max -r --related" |
| local prev="${COMP_WORDS[COMP_CWORD-1]}" |
| local cur="${COMP_WORDS[COMP_CWORD]}" |
| case "$prev" in |
| -f| --freq | -d | --min | -u | --max) |
| if [ -d /sys/devices/system/cpu/cpufreq/ ] ; then |
| COMPREPLY=($(compgen -W '$(cat $(ls -d /sys/devices/system/cpu/cpufreq/policy* | head -1)/scaling_available_frequencies)' -- "$cur")) |
| fi ;; |
| -g| --governor) |
| if [ -d /sys/devices/system/cpu/cpufreq/ ] ; then |
| COMPREPLY=($(compgen -W '$(cat $(ls -d /sys/devices/system/cpu/cpufreq/policy* | head -1)/scaling_available_governors)' -- "$cur")) |
| fi;; |
| frequency-set) COMPREPLY=($(compgen -W "$flags" -- "$cur")) ;; |
| esac |
| } |
| |
| _idle_info() |
| { |
| local flags="-f --silent" |
| local prev="${COMP_WORDS[COMP_CWORD-1]}" |
| local cur="${COMP_WORDS[COMP_CWORD]}" |
| case "$prev" in |
| idle-info) COMPREPLY=($(compgen -W "$flags" -- "$cur")) ;; |
| esac |
| } |
| |
| _idle_set() |
| { |
| local flags="-d --disable -e --enable -D --disable-by-latency -E --enable-all" |
| local prev="${COMP_WORDS[COMP_CWORD-1]}" |
| local cur="${COMP_WORDS[COMP_CWORD]}" |
| case "$prev" in |
| idle-set) COMPREPLY=($(compgen -W "$flags" -- "$cur")) ;; |
| esac |
| } |
| |
| _set() |
| { |
| local flags="--perf-bias, -b" |
| local prev="${COMP_WORDS[COMP_CWORD-1]}" |
| local cur="${COMP_WORDS[COMP_CWORD]}" |
| case "$prev" in |
| set) COMPREPLY=($(compgen -W "$flags" -- "$cur")) ;; |
| esac |
| } |
| |
| _monitor() |
| { |
| local flags="-l -m -i -c -v" |
| local prev="${COMP_WORDS[COMP_CWORD-1]}" |
| local cur="${COMP_WORDS[COMP_CWORD]}" |
| case "$prev" in |
| monitor) COMPREPLY=($(compgen -W "$flags" -- "$cur")) ;; |
| esac |
| } |
| |
| _taskset() |
| { |
| local prev_to_prev="${COMP_WORDS[COMP_CWORD-2]}" |
| local prev="${COMP_WORDS[COMP_CWORD-1]}" |
| local cur="${COMP_WORDS[COMP_CWORD]}" |
| case "$prev_to_prev" in |
| -c|--cpu) COMPREPLY=($(compgen -W "$_cpupower_commands" -- "$cur")) ;; |
| esac |
| case "$prev" in |
| frequency-info) _frequency_info ;; |
| frequency-set) _frequency_set ;; |
| idle-info) _idle_info ;; |
| idle-set) _idle_set ;; |
| set) _set ;; |
| monitor) _monitor ;; |
| esac |
| |
| } |
| |
| _cpupower () |
| { |
| local i |
| local c=1 |
| local command |
| |
| while test $c -lt $COMP_CWORD; do |
| if test $c == 1; then |
| command="${COMP_WORDS[c]}" |
| fi |
| c=$((++c)) |
| done |
| |
| # Complete name of subcommand if the user has not finished typing it yet. |
| if test $c -eq $COMP_CWORD -a -z "$command"; then |
| COMPREPLY=($(compgen -W "help -v --version -c --cpu $_cpupower_commands" -- "${COMP_WORDS[COMP_CWORD]}")) |
| return |
| fi |
| |
| # Complete arguments to subcommands. |
| case "$command" in |
| -v|--version) return ;; |
| -c|--cpu) _taskset ;; |
| help) COMPREPLY=($(compgen -W "$_cpupower_commands" -- "${COMP_WORDS[COMP_CWORD]}")) ;; |
| frequency-info) _frequency_info ;; |
| frequency-set) _frequency_set ;; |
| idle-info) _idle_info ;; |
| idle-set) _idle_set ;; |
| set) _set ;; |
| monitor) _monitor ;; |
| esac |
| } |
| |
| complete -o bashdefault -o default -F _cpupower cpupower 2>/dev/null \ |
| || complete -o default -F _cpupower cpupower |