diff --git a/completions/Makefile.am b/completions/Makefile.am index 535b09de..da071ff1 100644 --- a/completions/Makefile.am +++ b/completions/Makefile.am @@ -5,6 +5,7 @@ bashcomp_DATA = 2to3 \ abook \ aclocal \ acpi \ + adb \ add_members \ alias \ ant \ diff --git a/completions/adb b/completions/adb new file mode 100644 index 00000000..80c96277 --- /dev/null +++ b/completions/adb @@ -0,0 +1,66 @@ +# adb completion -*- shell-script -*- + +_adb_command_usage() +{ + COMPREPLY=( $( compgen -W \ + '$( "$1" help 2>&1 | command grep "^ *\(adb \)\? *$2 " \ + | 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]}" != -@(s|p) ]]; then + cmd="${words[i]}" + break + fi + done + + if [[ ! "$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 | sed -ne "s/^ *adb *forward *-/-/p" | \ + _parse_help - )' -- "$cur" ) ) + ;; + reboot) + COMPREPLY=( $( compgen -W 'bootloader recovery' -- "$cur" ) ) + ;; + esac +} && +complete -F _adb adb + +# ex: ts=4 sw=4 et filetype=sh diff --git a/test/completion/adb.exp b/test/completion/adb.exp new file mode 100644 index 00000000..0da0ad12 --- /dev/null +++ b/test/completion/adb.exp @@ -0,0 +1 @@ +assert_source_completions adb diff --git a/test/lib/completions/adb.exp b/test/lib/completions/adb.exp new file mode 100644 index 00000000..0d41fd2d --- /dev/null +++ b/test/lib/completions/adb.exp @@ -0,0 +1,18 @@ +proc setup {} { + save_env +} + + +proc teardown {} { + assert_env_unmodified +} + + +setup + + +assert_complete_any "adb " +sync_after_int + + +teardown