mirror of
git://git.code.sf.net/p/zsh/code
synced 2025-07-10 16:31:27 +02:00
50 lines
1.3 KiB
Text
50 lines
1.3 KiB
Text
#compdef gsettings
|
|
|
|
local curcontext="$curcontext" state line expl ret=1
|
|
local subcmds
|
|
|
|
_arguments -A "-*" \
|
|
'(- 1 *)--version[show version information]' \
|
|
'--schemadir[specify location of schemata]:directory:_directories' \
|
|
':command:->subcmds' \
|
|
'*::args:->subargs' && ret=0
|
|
|
|
if [[ $state = subargs ]]; then
|
|
curcontext="${curcontext%:*}-$words[1]:"
|
|
case $words[1] in
|
|
help) state=subcmds;;
|
|
describe|get|range|reset|writable|monitor)
|
|
_arguments ':schema:->schemata' ':key:->keys'
|
|
;;
|
|
set)
|
|
_arguments ':schema:->schemata' ':key:->keys' ':value'
|
|
;;
|
|
(list|reset)-(keys|recursively|children)) state=schemata ;;
|
|
list-schemas)
|
|
_arguments '--print-paths'
|
|
;;
|
|
*) _default && ret=0 ;;
|
|
esac
|
|
fi
|
|
|
|
case $state in
|
|
subcmds)
|
|
subcmds=( ${(L)${${(M)${${(f)"$(_call_program commands $service help)"}[(r)Commands:*,-2]}:# *}#??}/ ##/:} )
|
|
_describe -t commands 'command' subcmds -M 'r:?|-=* r:|=*' && ret=0
|
|
state=''
|
|
;;
|
|
schemata)
|
|
if compset -P 1 '*:'; then
|
|
_directories && ret=0
|
|
else
|
|
_wanted schemata expl 'schema' compadd -M 'r:|.=* r:|=*' \
|
|
$(_call_program schemata $service list-schemas) && ret=0
|
|
fi
|
|
;;
|
|
keys)
|
|
_wanted keys expl 'key' compadd \
|
|
$(_call_program keys $service list-keys $words[CURRENT-1]) && ret=0
|
|
;;
|
|
esac
|
|
|
|
return ret
|