From 88f358a61e13912d477561bcad7e24b751b457ed Mon Sep 17 00:00:00 2001 From: Oliver Kiddle Date: Mon, 22 Sep 2014 23:56:22 +0200 Subject: 33198: new augeas completion --- ChangeLog | 2 ++ Completion/Unix/Command/_augeas | 58 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 60 insertions(+) create mode 100644 Completion/Unix/Command/_augeas diff --git a/ChangeLog b/ChangeLog index 451a2adca..22520ec68 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,7 @@ 2014-09-22 Oliver Kiddle + * 33198: Completion/Unix/Command/_augeas: new augtool completion + * users/19113: Completion/Linux/_cryptsetup: reorganised function 2014-09-22 Daniel Hahler diff --git a/Completion/Unix/Command/_augeas b/Completion/Unix/Command/_augeas new file mode 100644 index 000000000..622fa3467 --- /dev/null +++ b/Completion/Unix/Command/_augeas @@ -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 -- cgit 1.4.1