| # -*- 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 |