/bash_completion.d/bluez-utils
http://github.com/brinkman83/bashrc · #! · 452 lines · 403 code · 49 blank · 0 comment · 0 complexity · c716ccc77460d4736ba4dd5f4f0a3a97 MD5 · raw file
- # bash completion for bluez-utils
- have hcitool && {
- _bluetooth_adresses()
- {
- if [ -n "${COMP_BLUETOOTH_SCAN:-}" ]; then
- COMPREPLY=( ${COMPREPLY[@]:-} $( compgen -W "$( hcitool scan | \
- awk '/^\t/{print $1}' )" -- "$cur" ) )
- fi
- }
- _bluetooth_devices()
- {
- COMPREPLY=( ${COMPREPLY[@]:-} $( compgen -W "$( hcitool dev | \
- awk '/^\t/{print $1}' )" -- "$cur" ) )
- }
- _bluetooth_services()
- {
- COMPREPLY=( $( compgen -W 'DID SP DUN LAN FAX OPUSH FTP HS HF HFAG \
- SAP NAP GN PANU HCRP HID CIP A2SRC A2SNK AVRCT AVRTG UDIUE \
- UDITE SYNCML' -- "$cur" ) )
- }
- _bluetooth_packet_types()
- {
- COMPREPLY=( $( compgen -W 'DM1 DM3 DM5 DH1 DH3 DH5 HV1 HV2 HV3' \
- -- "$cur" ) )
- }
- _get_command()
- {
- local i
- command=
- for (( i=1; i < COMP_CWORD; i++ )); do
- if [[ "${COMP_WORDS[i]}" != -* ]]; then
- command=${COMP_WORDS[i]}
- break
- fi
- done
- }
- _hcitool()
- {
- local cur prev split=false
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
- _split_longopt && split=true
- case $prev in
- -i)
- _bluetooth_devices
- return 0;
- ;;
- --role)
- COMPREPLY=( $( compgen -W 'm s' -- "$cur" ) )
- return 0;
- ;;
- --pkt-type)
- _bluetooth_packet_types
- return 0;
- ;;
- esac
- $split && return 0
- _get_command
- if [ -z $command ]; then
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-h -i' -- "$cur" ) )
- else
- COMPREPLY=( $( compgen -W 'dev inq scan name info \
- spinq epinq cmd con cc dc sr cpt rssi lq tpl \
- afh lst auth enc key clkoff clock' -- "$cur" ) )
- fi
- else
- case $command in
- @(name|info|dc|rssi|lq|afh|auth|key|clkoff|lst))
- _count_args
- if [ $args -eq 2 ]; then
- _bluetooth_adresses
- fi
- ;;
- cc)
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '--role --pkt-type' -- "$cur" ) )
- else
- _count_args
- if [ $args -eq 2 ]; then
- _bluetooth_adresses
- fi
- fi
- ;;
- sr)
- _count_args
- if [ $args -eq 2 ]; then
- _bluetooth_adresses
- else
- COMPREPLY=( $( compgen -W 'master slave' -- "$cur" ) )
- fi
- ;;
- cpt)
- _count_args
- if [ $args -eq 2 ]; then
- _bluetooth_adresses
- else
- _bluetooth_packet_types
- fi
- ;;
- @(tpl|enc|clock))
- _count_args
- if [ $args -eq 2 ]; then
- _bluetooth_adresses
- else
- COMPREPLY=( $( compgen -W '0 1' -- "$cur" ) )
- fi
- ;;
- esac
- fi
- }
- complete -F _hcitool hcitool
- _sdptool()
- {
- local cur prev split=false
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
- _split_longopt && split=true
- case $prev in
- --bdaddr)
- _bluetooth_adresses
- return 0;
- ;;
- esac
- $split && return 0
- _get_command
- if [ -z $command ]; then
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '--help' -- "$cur" ) )
- else
- COMPREPLY=( $( compgen -W 'search browse records add \
- del get setattr setseq' -- "$cur" ) )
- fi
- else
- case $command in
- search)
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '--bdaddr \
- --tree --raw --xml' -- "$cur" ) )
- else
- _bluetooth_services
- fi
- ;;
- @(browse|records))
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '--tree --raw --xml' -- "$cur" ) )
- else
- _bluetooth_adresses
- fi
- ;;
- add)
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '--handle --channel' -- "$cur" ) )
- else
- _bluetooth_services
- fi
- ;;
- get)
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '--bdaddr \
- --tree --raw --xml' -- "$cur" ) )
- fi
- ;;
- esac
- fi
- }
- complete -F _sdptool sdptool
- _l2ping()
- {
- local cur prev
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
- case $prev in
- -i)
- _bluetooth_devices
- return 0;
- ;;
- esac
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-i -s -c -t -f -r' -- "$cur" ) )
- else
- _bluetooth_adresses
- fi
- }
- complete -F _l2ping l2ping
- _rfcomm()
- {
- local cur prev
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
- case $prev in
- -@(f|-config))
- _filedir
- return 0;
- ;;
- -i)
- _bluetooth_devices
- _bluetooth_adresses
- return 0;
- ;;
- esac
- _get_command
- if [ -z $command ]; then
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-h --help -a -r --raw -f \
- --config -i -A --auth -E --encrypt -S --secure \
- -M --master' -- "$cur" ) )
- else
- COMPREPLY=( $( compgen -W 'show connect listen watch \
- bind release' -- "$cur" ) )
- fi
- else
- _count_args
- if [ $args -eq 2 ]; then
- _bluetooth_devices
- else
- case $command in
- @(connect|bind))
- if [ $args -eq 3 ]; then
- _bluetooth_adresses
- fi
- ;;
- esac
- fi
- fi
- }
- complete -F _rfcomm rfcomm
- _ciptool()
- {
- local cur prev
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
- case $prev in
- -i)
- _bluetooth_devices
- _bluetooth_adresses
- return 0;
- ;;
- esac
- _get_command
- if [ -z $command ]; then
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-h --help -i' -- "$cur" ) )
- else
- COMPREPLY=( $( compgen -W 'show search connect release \
- loopback' -- "$cur" ) )
- fi
- else
- case $command in
- @(connect|release|loopback))
- _count_args
- if [ $args -eq 2 ]; then
- _bluetooth_adresses
- fi
- ;;
- esac
- fi
- }
- complete -F _ciptool ciptool
- _dfutool()
- {
- local cur prev
- COMPREPLY=()
- cur=`_get_cword`
- prev=${COMP_WORDS[COMP_CWORD-1]}
- case $prev in
- -@(d|-device))
- _bluetooth_devices
- return 0;
- ;;
- esac
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-h --help -d --device' -- "$cur" ) )
- else
- _count_args
- case $args in
- 1)
- COMPREPLY=( $( compgen -W 'verify modify \
- upgrade archive' -- "$cur" ) )
- ;;
- 2)
- _filedir
- ;;
- esac
- fi
- }
- complete -F _dfutool dfutool
- _hciconfig()
- {
- local cur
- COMPREPLY=()
- cur=`_get_cword`
- _get_command
- if [ -z $command ]; then
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-h --help -a --all' -- "$cur" ) )
- else
- COMPREPLY=( $( compgen -W 'up down reset rstat auth \
- noauth encrypt noencrypt secmgr nosecmgr \
- piscan noscan iscan pscan ptype name class \
- voice iac inqmode inqdata inqtype inqparams \
- pageparms pageto afhmode aclmtu scomtu putkey \
- delkey commands features version revision lm' \
- -- "$cur" ) )
- fi
- else
- case $command in
- @(putkey|delkey))
- _count_args
- if [ $args -eq 2 ]; then
- _bluetooth_adresses
- fi
- ;;
- lm)
- _count_args
- if [ $args -eq 2 ]; then
- COMPREPLY=( $( compgen -W 'MASTER \
- SLAVE NONE ACCEPT' -- "$cur" ) )
- fi
- ;;
- ptype)
- _count_args
- if [ $args -eq 2 ]; then
- _bluetooth_packet_types
- fi
- ;;
- esac
- fi
- }
- complete -F _hciconfig hciconfig
- _hciattach()
- {
- local cur
- COMPREPLY=()
- cur=`_get_cword`
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-n -p -t -b -s -l' -- "$cur" ) )
- else
- _count_args
- case $args in
- 1)
- COMPREPLY=( $( command ls /dev/tty* ) )
- COMPREPLY=( $( compgen -W '${COMPREPLY[@]} \
- ${COMPREPLY[@]#/dev/}' -- "$cur" ) )
- ;;
- 2)
- COMPREPLY=( $( compgen -W 'any ericsson digi \
- xircom csr bboxes swave bcsp 0x0105 \
- 0x080a 0x0160 0x0002' -- "$cur" ) )
- ;;
- 3)
- COMPREPLY=( $( compgen -W '9600 19200 38400 \
- 57600 115200 230400 460800 921600' -- "$cur" ) )
- ;;
- 4)
- COMPREPLY=( $( compgen -W 'flow noflow' -- "$cur" ) )
- ;;
- 5)
- _bluetooth_adresses
- ;;
- esac
- fi
- }
- complete -F _hciattach hciattach
- _hid2hci()
- {
- local cur
- COMPREPLY=()
- cur=`_get_cword`
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-h --help -q --quiet -0 --tohci -1 \
- --tohid' -- "$cur" ) )
- fi
- }
- complete -F _hid2hci hid2hci
- _avctrl()
- {
- local cur
- COMPREPLY=()
- cur=`_get_cword`
- if [[ "$cur" == -* ]]; then
- COMPREPLY=( $( compgen -W '-h --help -q --quiet' -- "$cur" ) )
- else
- _count_args
- if [ $args -eq 1 ]; then
- COMPREPLY=( $( compgen -W 'discover switch' -- "$cur" ) )
- fi
- fi
- }
- complete -F _avctrl avctrl
- }
- # Local variables:
- # mode: shell-script
- # sh-basic-offset: 4
- # sh-indent-comment: t
- # indent-tabs-mode: nil
- # End:
- # ex: ts=4 sw=4 et filetype=sh