Raphaël Droz 2015-05-11 11:58:19 +03:00 committed by Ville Skyttä
parent 40c764af57
commit 3eb1b0dda8

233
completions/gnokii Normal file
View File

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