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 + +# 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 . + +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: