aboutsummaryrefslogtreecommitdiffstats
path: root/src/_svm
diff options
context:
space:
mode:
authormollifier <mollifier@gmail.com>2013-04-10 06:20:10 +0900
committermollifier <mollifier@gmail.com>2013-04-10 06:20:10 +0900
commit4fc0541ad1cc84e934ee7dc8bd18b137512dec18 (patch)
treef2cd9b1581f893761e4ece68fa41d19ea4937c27 /src/_svm
parent_id3v2: complete at least one option before filenames (diff)
downloadzsh-completions-4fc0541ad1cc84e934ee7dc8bd18b137512dec18.tar
zsh-completions-4fc0541ad1cc84e934ee7dc8bd18b137512dec18.tar.gz
zsh-completions-4fc0541ad1cc84e934ee7dc8bd18b137512dec18.tar.bz2
zsh-completions-4fc0541ad1cc84e934ee7dc8bd18b137512dec18.tar.lz
zsh-completions-4fc0541ad1cc84e934ee7dc8bd18b137512dec18.tar.xz
zsh-completions-4fc0541ad1cc84e934ee7dc8bd18b137512dec18.tar.zst
zsh-completions-4fc0541ad1cc84e934ee7dc8bd18b137512dec18.zip
Add svm(Scala Version Manager) completion.
Diffstat (limited to 'src/_svm')
-rw-r--r--src/_svm169
1 files changed, 169 insertions, 0 deletions
diff --git a/src/_svm b/src/_svm
new file mode 100644
index 0000000..d778f34
--- /dev/null
+++ b/src/_svm
@@ -0,0 +1,169 @@
+#compdef svm
+# ------------------------------------------------------------------------------
+# Copyright (c) 2011 Github zsh-users - http://github.com/zsh-users
+# All rights reserved.
+#
+# Redistribution and use in source and binary forms, with or without
+# modification, are permitted provided that the following conditions are met:
+# * Redistributions of source code must retain the above copyright
+# notice, this list of conditions and the following disclaimer.
+# * Redistributions in binary form must reproduce the above copyright
+# notice, this list of conditions and the following disclaimer in the
+# documentation and/or other materials provided with the distribution.
+# * Neither the name of the zsh-users nor the
+# names of its contributors may be used to endorse or promote products
+# derived from this software without specific prior written permission.
+#
+# THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
+# ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
+# WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
+# DISCLAIMED. IN NO EVENT SHALL ZSH-USERS BE LIABLE FOR ANY
+# DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
+# (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
+# LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
+# ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+# SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+# ------------------------------------------------------------------------------
+# Description
+# -----------
+#
+# Completion script for svm (https://github.com/yuroyoro/svm)
+#
+# ------------------------------------------------------------------------------
+# Authors
+# -------
+#
+# * Hideaki Miyake (https://github.com/mollifier)
+#
+# ------------------------------------------------------------------------------
+
+local context curcontext="$curcontext" state line ret=1
+typeset -A opt_args
+
+
+local -a _1st_arguments
+_1st_arguments=(
+ 'help:show this usage information'
+ 'current:show the currently use scala version'
+ "list:show the scala version installed in svm_path(default is ${HOME}/.svm)"
+ "versions:show the available scala version not installed"
+ 'install:install specific scala version'
+ 'remove:uninstall specific scala version and remove their sources'
+ 'switch:setup to use a specific scala version'
+ 'update-latest:install or update nightly build scala version'
+ 'latest:setup to use nightly build scala version'
+ 'stable:setup to use stable(x.x.x.final) scala version'
+)
+
+_arguments -C \
+ '(-)-h[show this usage information]' \
+ '-c[show the currently use scala version]' \
+ "-l[show the scala version installed in svm_path(default is ${HOME}/.svm)]" \
+ '-v[show the abalabe scala version not installed]' \
+ '-i[install specific scala version]: :_svm_completion_not_installed_scala_versions' \
+ '-r[uninstall specific scala version and remove their sources]: :_svm_completion_installed_scala_versions' \
+ '(-s -u)'{-s,-u}'[setup to use a specific scala version]: :_svm_completion_not_selected_scala_versions' \
+ '1: :->cmds' \
+ '*:: :->args' && ret=0
+
+
+# installed scala versions
+(( $+functions[_svm_completion_installed_scala_versions] )) ||
+_svm_completion_installed_scala_versions() {
+ local -a _installed_versions
+ _current_version="${$(_call_program installed svm current)#currently version is[[:space:]]*}"
+
+ # collect lines starts with digit
+ _installed_versions=( ${(M)${(@f)"$(_call_program installed svm list)"}:#[[:digit:]]*} )
+
+ _describe -t installed "installed versions" _installed_versions
+}
+
+# installed and not selected scala versions
+(( $+functions[_svm_completion_not_selected_scala_versions] )) ||
+_svm_completion_not_selected_scala_versions() {
+ local _current_version
+ local -a _not_selected_versions
+
+ _current_version="${$(_call_program installed svm current)#currently version is[[:space:]]*}"
+
+ # collect lines starts with digit
+ _not_selected_versions=( ${(M)${(@f)"$(_call_program installed svm list)"}:#[[:digit:]]*} )
+
+ # remove current version
+ _not_selected_versions=( ${_not_selected_versions:#$_current_version})
+ _describe -t installed "not selected versions" _not_selected_versions
+}
+
+# not installed scala versions
+(( $+functions[_svm_completion_not_installed_scala_versions] )) ||
+_svm_completion_not_installed_scala_versions() {
+ local -a _not_installed_versions
+ # collect lines starts with digit
+ _not_installed_versions=( ${(M)${(@f)"$(_call_program installed svm versions)"}:#[[:digit:]]*} )
+
+ _describe -t notinstalled "not installed versions" _not_installed_versions
+}
+
+
+case $state in
+ cmds)
+ # action
+ case $PREFIX in
+ u*)
+ # complete command synonyms
+ local -a _synonym_arguments
+ _synonym_arguments=(
+ 'uninstall:uninstall specific scala version and remove their sources'
+ 'use:setup to use a specific scala version'
+ 'update-latest:install or update nightly build scala version'
+ )
+ _describe -t actions 'svm actions' _synonym_arguments && ret=0
+ ;;
+
+ *)
+ _describe -t actions 'svm actions' _1st_arguments
+ _svm_completion_not_selected_scala_versions && ret=0
+ ;;
+ esac
+ ;; # end action
+
+ args)
+ # scala version number
+ case $words[1] in
+ install)
+ # install not installed version
+ _arguments \
+ '1: :_svm_completion_not_installed_scala_versions' \
+ '--docs[with install, update-latest download scala-devel-docs.]' \
+ '--sources[with install, update-latest download scala-sources.]' && ret=0
+ ;;
+
+ remove|uninstall)
+ # remove installed version
+ _arguments \
+ '1: :_svm_completion_installed_scala_versions' && ret=0
+ ;;
+
+ switch|use)
+ # use installed version
+ _arguments \
+ '1: :_svm_completion_not_selected_scala_versions' && ret=0
+ ;;
+
+ esac
+
+ ;; # end args
+esac
+
+return ret
+
+# Local Variables:
+# mode: Shell-Script
+# sh-indentation: 2
+# indent-tabs-mode: nil
+# sh-basic-offset: 2
+# End:
+# vim: ft=zsh sw=2 ts=2 et
+