1
0
Fork 0
mirror of git://git.code.sf.net/p/zsh/code synced 2025-02-02 03:42:16 +01:00

33198: new augeas completion

This commit is contained in:
Oliver Kiddle 2014-09-22 23:56:22 +02:00
parent efffe080d5
commit 88f358a61e
2 changed files with 60 additions and 0 deletions

View file

@ -1,5 +1,7 @@
2014-09-22 Oliver Kiddle <opk@zsh.org>
* 33198: Completion/Unix/Command/_augeas: new augtool completion
* users/19113: Completion/Linux/_cryptsetup: reorganised function
2014-09-22 Daniel Hahler <dhahler@gmail.com>

View file

@ -0,0 +1,58 @@
#compdef augtool
local curcontext="$curcontext" state line expl ret=1
local -A opt_args
_arguments -C -s \
'(-c --typecheck)'{-c,--typecheck}'[perform type checking on lenses]' \
'(-b --backup)'{-b,--backup}'[preserve original files with .augsave extension]' \
'(-n --new)'{-n,--new}'[leave files untouched but save changes with a .augnew extension]' \
'(-r --root)'{-r,--root=}'[specify filesystem root]:root directory:_files -/' \
\*{-I+,--include=}'[add directory containing lenses to search path]:directory:_files -/' \
'(-f --file *)'{-f+,--file=}'[read commands from specified file]:file:_files' \
'(-i --interactive)'{-i,--interactive}'[read commands from the terminal]' \
'(-e --echo)'{-e,--echo}'[echo commands read from a file or stdin]' \
'(-s --autosave)'{-s,--autosave}'[automatically save at the end of instructions]' \
'(-S --nostdinc)'{-S,--nostdinc}'[do not search the builtin default directories for modules]' \
'(-L --noload)'{-L,--noload}'[do not load any files into the tree on startup]' \
'(-A --noautoload)'{-A,--noautoload}'[do not autoload modules from the search path]' \
'--span[load span positions for nodes related to a file]' \
'(- *)--version[print version information]' \
'(-)'{-h,--help}'[print help information]' \
'*:: :->subcommands' && ret=0
[[ -z $state ]] && return ret
if [[ CURRENT -eq 1 || $words[1] == help ]]; then
local -a subcmds
subcmds=( ${${${(f)"$(_call_program subcommands augtool help 2>/dev/null)"}[2,-2]## #}// #- /:} )
_describe -t subcommands "augtool command" subcmds && ret=0
return ret
fi
_tags paths
while _tags; do
if _requested paths; then
local subcmd="$words[1]"
curcontext="${curcontext%:*}-${subcmd}:"
if compset -P '/files/'; then
_all_labels paths expl path _path_files -W / && ret=0
elif compset -P '/augeas/'; then
compset -P '*/'
local files
files=( ${${(f)"$(_call_program path augtool ls ${words[CURRENT]%/*} 2>/dev/null)"}% = *} )
while _next_label paths expl path; do
compadd "$expl[@]" -- ${files:#*/} && ret=0
compadd "$expl[@]" -S '' -- ${(M)files:#*/} && ret=0
done
else
local -a suf
suf=(-S '')
compset -S '/*' || suf=( -S / )
_all_labels paths expl path compadd -P/ "$suf[@]" files augeas && ret=0
fi
fi
(( ret )) || break
done
return ret