18c2ecf20Sopenharmony_ci# -*- shell-script -*- 28c2ecf20Sopenharmony_ci# bash completion script for cpupower 38c2ecf20Sopenharmony_ci# Taken from git.git's completion script. 48c2ecf20Sopenharmony_ci 58c2ecf20Sopenharmony_ci_cpupower_commands="frequency-info frequency-set idle-info idle-set set info monitor" 68c2ecf20Sopenharmony_ci 78c2ecf20Sopenharmony_ci_frequency_info () 88c2ecf20Sopenharmony_ci{ 98c2ecf20Sopenharmony_ci 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" 108c2ecf20Sopenharmony_ci local prev="${COMP_WORDS[COMP_CWORD-1]}" 118c2ecf20Sopenharmony_ci local cur="${COMP_WORDS[COMP_CWORD]}" 128c2ecf20Sopenharmony_ci case "$prev" in 138c2ecf20Sopenharmony_ci frequency-info) COMPREPLY=($(compgen -W "$flags" -- "$cur")) ;; 148c2ecf20Sopenharmony_ci esac 158c2ecf20Sopenharmony_ci} 168c2ecf20Sopenharmony_ci 178c2ecf20Sopenharmony_ci_frequency_set () 188c2ecf20Sopenharmony_ci{ 198c2ecf20Sopenharmony_ci local flags="-f -g --freq --governor -d --min -u --max -r --related" 208c2ecf20Sopenharmony_ci local prev="${COMP_WORDS[COMP_CWORD-1]}" 218c2ecf20Sopenharmony_ci local cur="${COMP_WORDS[COMP_CWORD]}" 228c2ecf20Sopenharmony_ci case "$prev" in 238c2ecf20Sopenharmony_ci -f| --freq | -d | --min | -u | --max) 248c2ecf20Sopenharmony_ci if [ -d /sys/devices/system/cpu/cpufreq/ ] ; then 258c2ecf20Sopenharmony_ci COMPREPLY=($(compgen -W '$(cat $(ls -d /sys/devices/system/cpu/cpufreq/policy* | head -1)/scaling_available_frequencies)' -- "$cur")) 268c2ecf20Sopenharmony_ci fi ;; 278c2ecf20Sopenharmony_ci -g| --governor) 288c2ecf20Sopenharmony_ci if [ -d /sys/devices/system/cpu/cpufreq/ ] ; then 298c2ecf20Sopenharmony_ci COMPREPLY=($(compgen -W '$(cat $(ls -d /sys/devices/system/cpu/cpufreq/policy* | head -1)/scaling_available_governors)' -- "$cur")) 308c2ecf20Sopenharmony_ci fi;; 318c2ecf20Sopenharmony_ci frequency-set) COMPREPLY=($(compgen -W "$flags" -- "$cur")) ;; 328c2ecf20Sopenharmony_ci esac 338c2ecf20Sopenharmony_ci} 348c2ecf20Sopenharmony_ci 358c2ecf20Sopenharmony_ci_idle_info() 368c2ecf20Sopenharmony_ci{ 378c2ecf20Sopenharmony_ci local flags="-f --silent" 388c2ecf20Sopenharmony_ci local prev="${COMP_WORDS[COMP_CWORD-1]}" 398c2ecf20Sopenharmony_ci local cur="${COMP_WORDS[COMP_CWORD]}" 408c2ecf20Sopenharmony_ci case "$prev" in 418c2ecf20Sopenharmony_ci idle-info) COMPREPLY=($(compgen -W "$flags" -- "$cur")) ;; 428c2ecf20Sopenharmony_ci esac 438c2ecf20Sopenharmony_ci} 448c2ecf20Sopenharmony_ci 458c2ecf20Sopenharmony_ci_idle_set() 468c2ecf20Sopenharmony_ci{ 478c2ecf20Sopenharmony_ci local flags="-d --disable -e --enable -D --disable-by-latency -E --enable-all" 488c2ecf20Sopenharmony_ci local prev="${COMP_WORDS[COMP_CWORD-1]}" 498c2ecf20Sopenharmony_ci local cur="${COMP_WORDS[COMP_CWORD]}" 508c2ecf20Sopenharmony_ci case "$prev" in 518c2ecf20Sopenharmony_ci idle-set) COMPREPLY=($(compgen -W "$flags" -- "$cur")) ;; 528c2ecf20Sopenharmony_ci esac 538c2ecf20Sopenharmony_ci} 548c2ecf20Sopenharmony_ci 558c2ecf20Sopenharmony_ci_set() 568c2ecf20Sopenharmony_ci{ 578c2ecf20Sopenharmony_ci local flags="--perf-bias, -b" 588c2ecf20Sopenharmony_ci local prev="${COMP_WORDS[COMP_CWORD-1]}" 598c2ecf20Sopenharmony_ci local cur="${COMP_WORDS[COMP_CWORD]}" 608c2ecf20Sopenharmony_ci case "$prev" in 618c2ecf20Sopenharmony_ci set) COMPREPLY=($(compgen -W "$flags" -- "$cur")) ;; 628c2ecf20Sopenharmony_ci esac 638c2ecf20Sopenharmony_ci} 648c2ecf20Sopenharmony_ci 658c2ecf20Sopenharmony_ci_monitor() 668c2ecf20Sopenharmony_ci{ 678c2ecf20Sopenharmony_ci local flags="-l -m -i -c -v" 688c2ecf20Sopenharmony_ci local prev="${COMP_WORDS[COMP_CWORD-1]}" 698c2ecf20Sopenharmony_ci local cur="${COMP_WORDS[COMP_CWORD]}" 708c2ecf20Sopenharmony_ci case "$prev" in 718c2ecf20Sopenharmony_ci monitor) COMPREPLY=($(compgen -W "$flags" -- "$cur")) ;; 728c2ecf20Sopenharmony_ci esac 738c2ecf20Sopenharmony_ci} 748c2ecf20Sopenharmony_ci 758c2ecf20Sopenharmony_ci_taskset() 768c2ecf20Sopenharmony_ci{ 778c2ecf20Sopenharmony_ci local prev_to_prev="${COMP_WORDS[COMP_CWORD-2]}" 788c2ecf20Sopenharmony_ci local prev="${COMP_WORDS[COMP_CWORD-1]}" 798c2ecf20Sopenharmony_ci local cur="${COMP_WORDS[COMP_CWORD]}" 808c2ecf20Sopenharmony_ci case "$prev_to_prev" in 818c2ecf20Sopenharmony_ci -c|--cpu) COMPREPLY=($(compgen -W "$_cpupower_commands" -- "$cur")) ;; 828c2ecf20Sopenharmony_ci esac 838c2ecf20Sopenharmony_ci case "$prev" in 848c2ecf20Sopenharmony_ci frequency-info) _frequency_info ;; 858c2ecf20Sopenharmony_ci frequency-set) _frequency_set ;; 868c2ecf20Sopenharmony_ci idle-info) _idle_info ;; 878c2ecf20Sopenharmony_ci idle-set) _idle_set ;; 888c2ecf20Sopenharmony_ci set) _set ;; 898c2ecf20Sopenharmony_ci monitor) _monitor ;; 908c2ecf20Sopenharmony_ci esac 918c2ecf20Sopenharmony_ci 928c2ecf20Sopenharmony_ci} 938c2ecf20Sopenharmony_ci 948c2ecf20Sopenharmony_ci_cpupower () 958c2ecf20Sopenharmony_ci{ 968c2ecf20Sopenharmony_ci local i 978c2ecf20Sopenharmony_ci local c=1 988c2ecf20Sopenharmony_ci local command 998c2ecf20Sopenharmony_ci 1008c2ecf20Sopenharmony_ci while test $c -lt $COMP_CWORD; do 1018c2ecf20Sopenharmony_ci if test $c == 1; then 1028c2ecf20Sopenharmony_ci command="${COMP_WORDS[c]}" 1038c2ecf20Sopenharmony_ci fi 1048c2ecf20Sopenharmony_ci c=$((++c)) 1058c2ecf20Sopenharmony_ci done 1068c2ecf20Sopenharmony_ci 1078c2ecf20Sopenharmony_ci # Complete name of subcommand if the user has not finished typing it yet. 1088c2ecf20Sopenharmony_ci if test $c -eq $COMP_CWORD -a -z "$command"; then 1098c2ecf20Sopenharmony_ci COMPREPLY=($(compgen -W "help -v --version -c --cpu $_cpupower_commands" -- "${COMP_WORDS[COMP_CWORD]}")) 1108c2ecf20Sopenharmony_ci return 1118c2ecf20Sopenharmony_ci fi 1128c2ecf20Sopenharmony_ci 1138c2ecf20Sopenharmony_ci # Complete arguments to subcommands. 1148c2ecf20Sopenharmony_ci case "$command" in 1158c2ecf20Sopenharmony_ci -v|--version) return ;; 1168c2ecf20Sopenharmony_ci -c|--cpu) _taskset ;; 1178c2ecf20Sopenharmony_ci help) COMPREPLY=($(compgen -W "$_cpupower_commands" -- "${COMP_WORDS[COMP_CWORD]}")) ;; 1188c2ecf20Sopenharmony_ci frequency-info) _frequency_info ;; 1198c2ecf20Sopenharmony_ci frequency-set) _frequency_set ;; 1208c2ecf20Sopenharmony_ci idle-info) _idle_info ;; 1218c2ecf20Sopenharmony_ci idle-set) _idle_set ;; 1228c2ecf20Sopenharmony_ci set) _set ;; 1238c2ecf20Sopenharmony_ci monitor) _monitor ;; 1248c2ecf20Sopenharmony_ci esac 1258c2ecf20Sopenharmony_ci} 1268c2ecf20Sopenharmony_ci 1278c2ecf20Sopenharmony_cicomplete -o bashdefault -o default -F _cpupower cpupower 2>/dev/null \ 1288c2ecf20Sopenharmony_ci || complete -o default -F _cpupower cpupower 129