#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 -/' \ \*{-t+,--transform=}'[add a file transform]:xfm' \ '(-l --load-file)'{-l+,--load-file=}'[load individual file in the tree]:file:_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]' \ '--timing[after executing each command, show how long it took]' \ '(- *)--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=( ${${${(M)${(f)"$(_call_program subcommands augtool help 2>/dev/null)"}:# *}## #}// #- /:} ) _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