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:
parent
efffe080d5
commit
88f358a61e
2 changed files with 60 additions and 0 deletions
|
@ -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>
|
||||
|
|
58
Completion/Unix/Command/_augeas
Normal file
58
Completion/Unix/Command/_augeas
Normal 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
|
Loading…
Reference in a new issue