summaryrefslogtreecommitdiff
path: root/provides
diff options
context:
space:
mode:
Diffstat (limited to 'provides')
-rw-r--r--provides/zsh/completions/_pkg36
1 files changed, 36 insertions, 0 deletions
diff --git a/provides/zsh/completions/_pkg b/provides/zsh/completions/_pkg
new file mode 100644
index 0000000..8a621a6
--- /dev/null
+++ b/provides/zsh/completions/_pkg
@@ -0,0 +1,36 @@
+#compdef pkg
+## vim:ft=zsh
+## pkg completion
+## Daniel Friesel <derf@derf.homelinux.org>
+## https://derf.homelinux.org/~derf/dotfiles/zsh/completions/_pkg
+## see also: https://derf.homelinux.org/~derf/code/lighty-stats
+
+local arguments_action arguments_list arguments_listall
+local all installed
+
+all='pkg list-all'
+installed='pkg list'
+notinstalled='diff <(eval $installed) <(eval $all) | grep "^>" | cut -d " " -f 2'
+
+arguments_action=(
+ '1:action:(add install changelog changeroot check delete remove info list list-all local-update log push remote-update status update upgrade)'
+)
+arguments_list=(
+ '2:package:($(eval $installed))'
+)
+arguments_listall=(
+ '2:package:($(eval $all))'
+)
+arguments_notinstalled=(
+ '2:package:($(eval $notinstalled))'
+)
+
+if [[ $CURRENT -ge 3 ]] {
+ case ${words[2]} in
+ changelog|check|delete|log|push|remove|status|upgrade) _arguments -s $arguments_list ;;
+ info) _arguments -s $arguments_listall ;;
+ add|install) _arguments -s $arguments_notinstalled ;;
+ esac
+} else {
+ _arguments -s $arguments_action
+}