aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Benjamin Althues2014-09-26 22:20:09 +0200
committerGravatar Benjamin Althues2014-09-26 22:20:09 +0200
commit8d9428d2376e295e885096e93a2dc4429cd30d26 (patch)
tree7809c2591183c460d78121207baabb3cc74ca865
parent23b9e0d1348e269fd7f955bf61ed431975ed1a9e (diff)
downloadsti-8d9428d2376e295e885096e93a2dc4429cd30d26.tar.gz
sti-8d9428d2376e295e885096e93a2dc4429cd30d26.zip
Add autocompletion script for Zsh
-rw-r--r--zsh/_sti56
1 files changed, 56 insertions, 0 deletions
diff --git a/zsh/_sti b/zsh/_sti
new file mode 100644
index 0000000..637d987
--- /dev/null
+++ b/zsh/_sti
@@ -0,0 +1,56 @@
+#compdef sti
+# sti --- Stupid Tool Installer
+# Copyright (C) 2014 Tom Willemse <tom@ryuslash.org>
+
+# sti is free software: you can redistribute it and/or modify it under
+# the terms of the GNU General Public License as published by the Free
+# Software Foundation, either version 3 of the License, or (at your
+# option) any later version.
+
+# sti is distributed in the hope that it will be useful, but WITHOUT
+# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY
+# or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public
+# License for more details.
+
+# You should have received a copy of the GNU General Public License
+# along with sti. If not, see <http://www.gnu.org/licenses/>.
+
+local expl
+local -a sti_tools _sti_commands
+
+get_tools() {
+ if [[ "$state" == tools ]]; then
+ sti_tools=(${(f)"$(_call_program sti_tools \
+ sti list | awk '{ print $1 }' 2>/dev/null)"})
+ _wanted sti_tools expl 'enabled tools' compadd -a sti_tools
+ fi
+}
+
+_sti_commands=(
+ 'help:show help message'
+ 'install:install a tool from a git repository'
+ 'list:list downloaded tools'
+ 'reinit:retry installing the executables of a tool'
+ 'remove:remove an installed tool'
+ 'update:update an installed tool'
+)
+
+_arguments '*:: :->subcmds' && return 0
+
+if (( CURRENT == 1 )); then
+ _describe -t commands "sti command" _sti_commands
+ return
+fi
+
+case "$words[1]" in
+ h*)
+ _describe -t commands "sti subcommands" _sti_commands
+ return 0 ;;
+ i* | l* )
+ _arguments && return 0 ;;
+ r* | u*)
+ _arguments '*:: :->tools' && return 0
+ get_tools ;;
+esac
+
+# vim: set ft=zsh et ts=2 sw=2 sts=2: