diff options
Diffstat (limited to '')
-rw-r--r-- | completions/gnokii | 237 |
1 files changed, 237 insertions, 0 deletions
diff --git a/completions/gnokii b/completions/gnokii new file mode 100644 index 0000000..039141a --- /dev/null +++ b/completions/gnokii @@ -0,0 +1,237 @@ +# 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 \ + "$(command 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=$(command grep -v -- '--config\|--phone' <<<"$all_cmd") + + # 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: filetype=sh |