From 8e9fe082be378f23d5802e231b2051da18f00f10 Mon Sep 17 00:00:00 2001 From: Oliver Kiddle Date: Fri, 15 Sep 2017 20:24:04 +0200 Subject: 41711: new dconf completion --- Completion/Unix/Command/_dconf | 71 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 Completion/Unix/Command/_dconf (limited to 'Completion/Unix/Command/_dconf') diff --git a/Completion/Unix/Command/_dconf b/Completion/Unix/Command/_dconf new file mode 100644 index 000000000..bfb314c72 --- /dev/null +++ b/Completion/Unix/Command/_dconf @@ -0,0 +1,71 @@ +#compdef dconf + +local curcontext="$curcontext" state line cmds ret=1 +local cmd=$words[1] + +cmds=( + 'help:display help information' + 'read:read the value of a key' + 'list:list the contents of a directory' + 'write:change the value of a key' + 'reset:reset the value of a key or directory' + 'compile:compile a binary database from keyfiles' + 'update:update the system databases' + 'watch:watch a path for changes' + 'dump:dump an entire subpath to stdout' + 'load:populate a subpath from stdin' +) + +if (( CURRENT == 2 )); then + _describe -t commands command cmds + return +fi + +curcontext="${curcontext%:*}-$words[2]:" +shift words +(( CURRENT-- )) + +case $words[1] in + dump|list|load) state=dirs ;; + watch) state=keys ;; + read) + _arguments -A "-*" '-d[read default values]' '1:key:->keys' && ret=0 + ;; + write) + _arguments '1:key:->keys' '2:value' && ret=0 + ;; + reset) + _arguments -A "-*" '-f[reset entire directory]' '1:key:->keys' && ret=0 + [[ $+opt_args[-f] = 1 && state = keys ]] && state=dirs + ;; + compile) + _arguments '1:file:_files' '2:path:_directories' && ret=0 + ;; + help) + _describe -t commands command cmds && ret=0 + ;; + *) _default && ret=0 ;; +esac + +case $state in + keys) + compset -P '*/' + dirs=( ${${${(f)"$(_call_program keys dconf _complete \'\' "${IPREFIX:-/}")"}#$IPREFIX}%% #} ) + _tags keys + while _tags; do + if _requested keys; then + _description keys expl keu + compadd "$expl[@]" -qS ' ' ${dirs:#*/} && ret=0 + compadd "$expl[@]" -S '' ${(M)dirs:#*/} && ret=0 + fi + (( ret )) || break + done + ;; + dirs) + compset -P '*/' + _wanted keys expl directory compadd -S '' - \ + ${${(f)"$(_call_program keys dconf _complete / "${IPREFIX:-/}")"}#$IPREFIX} && ret=0 + ;; +esac + +return ret -- cgit 1.4.1