zsh-workers
 help / color / mirror / code / Atom feed
* PATCH: new completion for augeas
@ 2014-09-19 11:59 Oliver Kiddle
  0 siblings, 0 replies; only message in thread
From: Oliver Kiddle @ 2014-09-19 11:59 UTC (permalink / raw)
  To: Zsh workers

This adds completion for augtool. It could be improved, in particular by
handling the xpath-like expressions.

Oliver

diff --git a/Completion/Unix/Command/_augeas b/Completion/Unix/Command/_augeas
new file mode 100644
index 0000000..dedf8c0
--- /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


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2014-09-19 12:06 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-09-19 11:59 PATCH: new completion for augeas Oliver Kiddle

Code repositories for project(s) associated with this public inbox

	https://git.vuxu.org/mirror/zsh/

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).