# adb completion -*- shell-script -*- proc _adb_command_usage { setglobal COMPREPLY = '( '$( compgen -W \ '$( "$1" help 2>&1 | command grep "^ *\(adb \)\? *$2 " \ | sed -e "s/[]|[]/\n/g" | _parse_help - )' -- "$cur" ) ) } proc _adb { var cur = '', prev = '', words = '', cword = '' _init_completion || return match $prev { with -s|-p|--algo|--key|--iv return with -f _filedir return } var cmd = '', i = '' for (( i=1; i < cword; i++ )); do if [[ "${words[i]}" != -* && "${words[i-1]}" != -[sp] ]]; then cmd="${words[i]}" break fi done if [[ ! "$cmd" ]] { var tmp = ''() if [[ ! $cur || $cur == -* ]] { set tmp = '( '$( compgen -W '$( _parse_help "$1" help )' -- "$cur" ) ) } if [[ ! $cur || $cur != -* ]] { set tmp = '( '$( $1 help 2>&1 | awk '$1 == "adb" { print $2 }' ) ) set tmp = '( 'devices connect disconnect sideload ) } setglobal COMPREPLY = '( '$( compgen -W '${tmp[@]}' -- "$cur" ) ) return } # TODO: more and better command completions _adb_command_usage $1 $cmd match $cmd { with push|restore|sideload _filedir with forward setglobal COMPREPLY = '( '$( compgen -W \ '$( "$1" help 2>&1 | sed -ne "s/^ *adb *forward *-/-/p" | \ _parse_help - )' -- "$cur" ) ) with reboot setglobal COMPREPLY = '( '$( compgen -W 'bootloader recovery' -- "$cur" ) ) } } && complete -F _adb adb # ex: ts=4 sw=4 et filetype=sh