summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile4
-rw-r--r--shell/zsh-completion46
2 files changed, 50 insertions, 0 deletions
diff --git a/Makefile b/Makefile
index ea1c171..e01c275 100644
--- a/Makefile
+++ b/Makefile
@@ -12,6 +12,9 @@ MANPAGES = \
BASH_COMPLETION = \
shell/bash-completion
+ZSH_COMPLETION = \
+ shell/zsh-completion
+
INCLUDES = \
package.inc.sh \
remote.inc.sh \
@@ -43,6 +46,7 @@ install: all
install -m755 $(BINPROGS) $(DESTDIR)$(PREFIX)/bin
install -m644 $(MANPAGES) $(DESTDIR)$(PREFIX)/share/man/man1
install -Dm644 $(BASH_COMPLETION) $(DESTDIR)$(PREFIX)/share/bash-completion/completions/asp
+ install -Dm644 $(ZSH_COMPLETION) $(DESTDIR)$(PREFIX)/share/zsh/site-functions/_asp
dist:
git archive --format=tar --prefix=$(PACKAGE_NAME)-$(VER)/ $(VER) | gzip -9 > $(PACKAGE_NAME)-$(VER).tar.gz
diff --git a/shell/zsh-completion b/shell/zsh-completion
new file mode 100644
index 0000000..e26718b
--- /dev/null
+++ b/shell/zsh-completion
@@ -0,0 +1,46 @@
+#compdef asp
+
+_asp_command() {
+ local -a _asp_cmds
+ _asp_cmds=(
+ 'checkout'
+ 'difflog'
+ 'export'
+ 'gc'
+ 'disk-usage'
+ 'help'
+ 'list-all'
+ 'list-arches'
+ 'list-local'
+ 'list-repos'
+ 'log'
+ 'shortlog'
+ 'update'
+ 'untrack'
+ )
+
+if (( CURRENT == 1 )); then
+ _describe -t commands 'asp command' _asp_cmds || compadd "$@"
+else
+ local curcontext="$curcontext"
+ cmd="${${_asp_cmds[(r)$words[1]:*]%%:*}}"
+ if (( $#cmd )); then
+ if (( $+functions[_asp_$cmd] )); then
+ _asp_$cmd
+ else
+ _message "no more options"
+ fi
+ else
+ _message "unknown asp command: $words[1]"
+ fi
+fi
+}
+
+_arguments \
+ '-a[architecture]' \
+ '-f[overwrite files]' \
+ '-h[print help and exit]' \
+ '-V[print version and exit]' \
+ '*::asp command:_asp_command'
+
+# vim: set et sw=2 ts=2 ft=zsh :