#compdef sbt
# ------------------------------------------------------------------------------
# Copyright (c) 2013 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 sbt 0.12+ (http://scala-sbt.org).
#
# ------------------------------------------------------------------------------
# Authors
# -------
#
#  * Tony Sloane <inkytonik@gmail.com>
#  * Mirko Caserta <mirko.caserta@gmail.com>
#
# ------------------------------------------------------------------------------

local -a _sbt_commands
_sbt_commands=(
  'clean:delete files produced by the build'
  'compile:compile sources'
  'console:start the Scala REPL with project classes on the classpath'
  'console-quick:start the Scala REPL with project deps on the classpath'
  'console-project:start the Scala REPL w/sbt+build-def on the classpath'
  'dist:generate distribution artifacts'
  'dist\:clean:clean distribution artifacts'
  'doc:generate API documentation'
  'gen-idea:generate Intellij Idea project files'
  'package:produce the main artifact, such as a binary jar'
  'package-doc:produce a doc artifact, such as a jar containing API docs'
  'package-src:produce a source artifact, such as a jar containing sources'
  'publish:publish artifacts to a repository'
  'publish-local:publish artifacts to the local repository'
  'run:run a main class'
  'run-main:run the main class selected by the first argument'
  'test:execute all tests'
  'test-only:execute the tests provided as arguments'
  'test-quick:execute previously failed tests'
  'update:resolve and optionally retrieve dependencies'
)

local expl

_arguments \
  '(-help)-h[prints an help message]' \
  '(-h)-help[prints an help message]' \
  '(-verbose)-v[this runner is chattier]' \
  '(-v)-verbose[this runner is chattier]' \
  '(-debug)-d[set sbt log level to debug]' \
  '(-d)-debug[set sbt log level to debug]' \
  '-no-colors[disable ANSI color codes]' \
  '-sbt-create[start even if current dir contains no sbt project]' \
  '-sbt-dir[path to global settings/plugins dir (default: ~/.sbt)]' \
  '-sbt-boot[path to shared boot dir (default: ~/.sbt/boot)]' \
  '-ivy[path to local Ivy repository (default: ~/.ivy2)]' \
  '-mem[set memory options]' \
  '-no-share[use all local caches; no sharing]' \
  '-no-global[use global caches, but do not use global ~/.sbt dir]' \
  '-jvm-debug[turn on JVM debugging, open at the given port]' \
  '-batch[disable interactive mode]' \
  '-sbt-version[use the specified version of sbt]' \
  '-sbt-jar[use the specified jar as the sbt launcher]' \
  '(-sbt-snapshot)-sbt-rc[use an RC version of sbt]' \
  '(-sbt-rc)-sbt-snapshot[use a snapshot version of sbt]' \
  '-java-home[alternate JAVA_HOME]' \
  '*:: :->subcmds' && return 0

_describe -t commands "sbt subcommand" _sbt_commands
return 0
