summary refs log tree commit diff
path: root/Completion/BSD/Command
diff options
context:
space:
mode:
Diffstat (limited to 'Completion/BSD/Command')
-rw-r--r--Completion/BSD/Command/_pkgin79
1 files changed, 79 insertions, 0 deletions
diff --git a/Completion/BSD/Command/_pkgin b/Completion/BSD/Command/_pkgin
new file mode 100644
index 000000000..5cb12baea
--- /dev/null
+++ b/Completion/BSD/Command/_pkgin
@@ -0,0 +1,79 @@
+#compdef pkgin
+
+local curcontext="$curcontext" pkgin=$words[1] cmd ret=1
+local -a state state_descr line expl cmds short pkgs
+local -A opt_args
+
+_arguments -s -S -C \
+  '-c+[enable chrooting pkgin in the given repository]:chroot path:_directories' \
+  '-d[download only]' \
+  '-f[force database update]' \
+  '-F[force package reinstall]' \
+  '(- 1 *)-h[display usage information]' \
+  '-l+[only include the packages with the specified status flags]:limit chars:((
+    \=\:installed\ version\ is\ current
+    \<\:installed\ version\ is\ older
+    \>\:installed\ version\ is\ newer
+  ))' \
+  '(-y)-n[assume "no" as default answer and print results of actions to be taken line per line]' \
+  '-p[display results in a parsable format]' \
+  '-P[display packages versions instead of globs (sd, sfd, srd)]' \
+  '-t+[log package browsing (dependencies and impact) to specified log file]:log file:_files' \
+  '(- 1 *)-v[display version information]' \
+  '-V[be verbose when (un)installing]' \
+  '(-n)-y[assume "yes" as default answer, except for autoremove]' \
+  '1:command:->subcommands' \
+  '*:: :->restargs' && ret=0
+
+if [[ -n $state ]]; then
+  cmds=( ${${${(f)"$(_call_program commands $pkgin -h 2>&1)"}[3,-1]/ -  (#b)(?)/:$match:l}%.} )
+  short=( ${${cmds#*\(}/ #\)/} )
+  cmds=( ${cmds// #\(*\)/} )
+  if [[ $state = subcommands && ! -prefix - ]]; then
+    _describe -t commands "command" short -- cmds -M 'r:|-=* r:|=*' && ret=0
+    return ret
+  fi
+
+  cmd=${short[(I)${words[1]}:*]}
+  if (( cmd )); then
+    cmd=${cmds[cmd]%%:*}
+  else
+    cmd=$words[1]
+  fi
+  curcontext="${curcontext%:*}-$cmd"
+  case $cmd in
+    avail|autoremove|clean|export|(full-|)upgrade|show(|-no)-keep|update)
+      _nothing
+    ;;
+    import)
+      _wanted files expl file _files && ret=0
+    ;;
+    install|pkg-(content|descr|build-defs)|provides|requires|show(|-full|-rev)-deps|show-pkg-category)
+      _wanted packages expl package compadd - \
+	  ${${(f)"$(_call_program packages $pkgin avail)"}%%-[^- ]# *} && ret=0
+    ;;
+    keep)
+      _wanted packages expl package compadd - \
+	  ${${(f)"$(_call_program packages $pkgin show-no-keep)"}%%-[^- ]# *} && ret=0
+    ;;
+    remove)
+      _wanted packages expl package compadd - \
+	  ${${(f)"$(_call_program packages $pkgin list)"}%%-[^- ]# *} && ret=0
+    ;;
+    search)
+      _message -e patterns pattern
+    ;;
+    show-category)
+      _wanted -x categories expl category compadd - /usr/pkgsrc/*~*/CVS(N/:t) && ret=0
+    ;;
+    unkeep)
+      _wanted packages expl package compadd - \
+	  ${${(f)"$(_call_program packages $pkgin show-keep)"}%%-[^- ]# *} && ret=0
+    ;;
+    *)
+      _default && ret=0
+    ;;
+  esac
+fi
+
+return ret