diff options
Diffstat (limited to 'completions/_adb')
-rw-r--r-- | completions/_adb | 69 |
1 files changed, 69 insertions, 0 deletions
diff --git a/completions/_adb b/completions/_adb new file mode 100644 index 0000000..e8ebab1 --- /dev/null +++ b/completions/_adb @@ -0,0 +1,69 @@ +# adb completion -*- shell-script -*- + +# Use of this file is deprecated. Upstream completion is available in +# the Android SDK, use that instead. + +_adb_command_usage() +{ + COMPREPLY=($(compgen -W \ + '$("$1" help 2>&1 | command grep "^ *\(adb \)\? *$2 " \ + | command sed -e "s/[]|[]/\n/g" | _parse_help -)' -- "$cur")) +} + +_adb() +{ + local cur prev words cword + _init_completion || return + + case $prev in + -s | -p | --algo | --key | --iv) + return + ;; + -f) + _filedir + return + ;; + esac + + local cmd i + for ((i = 1; i < cword; i++)); do + if [[ ${words[i]} != -* && ${words[i - 1]} != -[sp] ]]; then + cmd="${words[i]}" + break + fi + done + + if [[ ! -v cmd ]]; then + local tmp=() + if [[ ! $cur || $cur == -* ]]; then + tmp+=($(compgen -W '$(_parse_help "$1" help)' -- "$cur")) + fi + if [[ ! $cur || $cur != -* ]]; then + tmp+=($($1 help 2>&1 | awk '$1 == "adb" { print $2 }')) + tmp+=(devices connect disconnect sideload) + fi + COMPREPLY=($(compgen -W '${tmp[@]}' -- "$cur")) + return + fi + + # TODO: more and better command completions + + _adb_command_usage "$1" $cmd + + case $cmd in + push | restore | sideload) + _filedir + ;; + forward) + COMPREPLY=($(compgen -W \ + '$("$1" help 2>&1 | command sed -ne "s/^ *adb *forward *-/-/p" | \ + _parse_help -)' -- "$cur")) + ;; + reboot) + COMPREPLY=($(compgen -W 'bootloader recovery' -- "$cur")) + ;; + esac +} && + complete -F _adb adb + +# ex: filetype=sh |