summaryrefslogtreecommitdiffstats
path: root/completions/gnokii
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--completions/gnokii237
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