mirror of
				git://git.code.sf.net/p/zsh/code
				synced 2025-11-04 07:21:06 +01:00 
			
		
		
		
	
		
			
				
	
	
		
			71 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			71 lines
		
	
	
	
		
			1.7 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
#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
 |