Sindbad~EG File Manager
# 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
Sindbad File Manager Version 1.0, Coded By Sindbad EG ~ The Terrorists