[Bash-completion-commits] [bash-completion] 01/01: adb: New completion

Ville Skyttä scop-guest at moszumanska.debian.org
Tue Jul 1 14:34:55 UTC 2014


This is an automated email from the git hooks/post-receive script.

scop-guest pushed a commit to branch master
in repository bash-completion.

commit 4bbab196cbce908dacbc225de71433272228a985
Author: Ville Skyttä <ville.skytta at iki.fi>
Date:   Tue Jul 1 17:34:42 2014 +0300

    adb: New completion
---
 completions/Makefile.am      |  1 +
 completions/adb              | 66 ++++++++++++++++++++++++++++++++++++++++++++
 test/completion/adb.exp      |  1 +
 test/lib/completions/adb.exp | 18 ++++++++++++
 4 files changed, 86 insertions(+)

diff --git a/completions/Makefile.am b/completions/Makefile.am
index 535b09d..da071ff 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 0000000..80c9627
--- /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 0000000..0da0ad1
--- /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 0000000..0d41fd2
--- /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

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/bash-completion/bash-completion.git



More information about the Bash-completion-commits mailing list