# gnokii(1) completion -*- shell-script -*- _gnokii_memory_type() { # TODO: reduce the number of choices COMPREPLY=( $( compgen -W "IN OU SM ME MT" -- "$cur" ) ) } _gnokii() { local cur prev words cword pprev tprev fprev _init_completion || return case $prev in --config) _filedir return ;; --phone) local config_file for config_file in "$XDG_CONFIG_HOME/gnokii/config" \ "$HOME/.config/gnokii/config" "$HOME/.gnokiirc" \ "$XDG_CONFIG_DIRS/gnokii/config" /etc/gnokiirc ; do [[ -f $config_file ]] && break done [[ ! -f $config_file ]] && return COMPREPLY=( $( compgen -W \ "$( sed -n 's/^\[phone_\(.*\)\]/\1/p' $config_file )" \ -- "$cur" ) ) return ;; --help) COMPREPLY=( $( compgen -W 'all monitor sms mms phonebook calendar todo dial profile settings wap logo ringtone security file other' -- "$cur" ) ) return ;; --version|--shell|ping) return ;; # MONITOR --monitor) COMPREPLY=( $( compgen -W 'delay once' -- "$cur" ) ) return ;; --getdisplaystatus|--displayoutput) return ;; --netmonitor) COMPREPLY=( $( compgen -W 'reset off field devel next nr' \ -- "$cur" ) ) return ;; # SMS --sendsms) # (how)TODO ? return ;; --savesms) COMPREPLY=( $( compgen -W '--sender --smsc --smscno --folder --location --sent --read --deliver --datetime' -- "$cur" ) ) return ;; --memory-type|--memory|--getsms|--deletesms|--getmms|--deletemms|\ --getphonebook|--deletephonebook) _gnokii_memory_type return ;; --getsmsc|--getcalendarnote|--deletecalendarnote|--gettodo|\ --getspeeddial) # TODO: grab a specific entry ID return ;; --setsmsc|--smsreader|--createsmsfolder|--deletealltodos|\ --showsmsfolderstatus) return ;; --deletesmsfolder|--folder) # TODO: folderid return ;; --writephonebook) COMPREPLY=( $( compgen -W '--overwrite --find-free --memory-type --location --vcard --ldif' -- "$cur" ) ) return ;; --writecalendarnote|--writetodo) _filedir vcf return ;; # DIAL --setspeeddial|--dialvoice|--senddtmf|--answercall|--hangup) # TODO return ;; --divert) COMPREPLY=( $( compgen -W '--op' -- "$cur" ) ) return ;; # PROFILE --getprofile|--setactiveprofile) # TODO return ;; --setprofile|--getactiveprofile) return ;; # SETTINGS --reset) COMPREPLY=( $( compgen -W 'soft hard' -- "$cur" ) ) return ;; --setdatetime|--setalarm) # TODO return ;; --getdatetime|--getalarm) return ;; # WAP --getwapbookmark|--writewapbookmark|--deletewapbookmark|\ --getwapsetting|--writewapsetting|--activatewapsetting) return ;; # LOGOS --sendlogo) COMPREPLY=( $( compgen -W 'caller op picture' -- "$cur" ) ) return ;; --setlogo|--getlogo) COMPREPLY=( $( compgen -W 'op startup caller dealer text' \ -- "$cur" ) ) return ;; --viewlogo) # TODO: logofile return ;; --entersecuritycode) COMPREPLY=( $( compgen -W 'PIN PIN2 PUK PUK2 SEC' -- "$cur" ) ) return ;; # TODO: RINGTONES esac # second level completion if [[ $((cword-2)) -ge 1 && ${words[cword-2]} =~ --* ]]; then pprev=${words[cword-2]} case $pprev in --setspeeddial) _gnokii_memory_type return ;; --getsms|--deletesms|--getmms|--deletemms|--getphonebook|\ --writetodo|--writecalendarnote) # TODO: start number return ;; --gettodo|--getcalendarnote) COMPREPLY=( $( compgen -W '{1..9} end --vCal' -- "$cur" ) ) return ;; --deletecalendarnote) COMPREPLY=( $( compgen -W '{1..9} end' -- "$cur" ) ) return ;; --divert) COMPREPLY=( $( compgen -W 'register enable query disable erasure' -- "$cur" ) ) return ;; esac fi # third level completion if [[ $((cword-3)) -ge 1 && ${words[cword-3]} =~ --* ]]; then tprev=${words[cword-3]} case $tprev in --deletesms|--deletemms) COMPREPLY=( $( compgen -W 'end' -- "$cur" ) ) return ;; --getphonebook|--writetodo|--writecalendarnote) COMPREPLY=( $( compgen -W '{1..9} end' -- "$cur" ) ) return ;; --gettodo|--getcalendarnote) [[ ${words[cword-1]} == end ]] && \ COMPREPLY=( $( compgen -W '--vCal' -- "$cur" ) ) return ;; --divert) COMPREPLY=( $( compgen -W '--type' -- "$cur" ) ) return esac fi # fourth level completion if [[ $((cword-4)) -ge 1 && ${words[cword-4]} =~ --* ]]; then fprev=${words[cword-4]} case $fprev in --getphonebook) COMPREPLY=( $( compgen -W '--raw --vcard --ldif' -- "$cur" ) ) return ;; --divert) COMPREPLY=( $( compgen -W 'all busy noans outofreach notavail' \ -- "$cur" ) ) return esac fi # safer to use LANG=C local all_cmd="$( LANG=C _parse_help $1 "--help all" )" # these 2 below are allowed in combination with others local main_cmd=$( echo "$all_cmd" | grep -v -- '--config\|--phone' ) # don't provide main command completions if one is # already on the command line [[ $COMP_LINE =~ $( tr ' ' '\b|'<<<$main_cmd ) ]] && return COMPREPLY=( $( compgen -W "$all_cmd" -- "$cur" ) ) } && complete -F _gnokii gnokii # ex: ts=4 sw=4 et filetype=sh