From b3eb7818371a740fa444b09a9346ba1e3667f562 Mon Sep 17 00:00:00 2001 From: Shohei YOSHIDA Date: Sun, 25 Dec 2022 16:23:41 +0900 Subject: [PATCH] Update sbt completion --- src/_sbt | 153 +++++++++++++++++++++++++++++++++++++------------------ 1 file changed, 103 insertions(+), 50 deletions(-) diff --git a/src/_sbt b/src/_sbt index ff9e3dd..86daa5b 100644 --- a/src/_sbt +++ b/src/_sbt @@ -28,7 +28,7 @@ # Description # ----------- # -# Completion script for sbt 0.12+ (https://www.scala-sbt.org). +# Completion script for sbt 1.8.0 (https://www.scala-sbt.org). # # ------------------------------------------------------------------------------ # Authors @@ -36,58 +36,111 @@ # # * Tony Sloane # * Mirko Caserta +# * Shohei Yoshida # # ------------------------------------------------------------------------------ -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' -) +_sbt() { + typeset -A opt_args + local context state line + local curcontext="$curcontext" + local ret=1 -local expl + _arguments \ + '(- *)'{-h,--help}'[print help message]' \ + '(-v --verbose)'{-v,--verbose}'[this runner is chattier]' \ + '(- *)'{-V,--version}'[print sbt version information]' \ + '--numeric-version[print the version of sbt script]' \ + '(-d --debug)'{-d,--debug}'[set sbt log level to debug]' \ + '--no-colors[disable ANSI color codes]' \ + '--color=[enable or disable ANSI color codes]: :(auto always true false never)' \ + '--supershell=[enable or disable super shell]: :(auto always true false never)' \ + '--traces[generate Trace Event report on shutdown]' \ + '--timings[display task timings report on shutdown]' \ + '--sbt-create[start sbt even if current directory contains no sbt project]' \ + '--sbt-dir[path to global settings/plugins directory]: :_files -/' \ + '--sbt-boot[path to shared boot directory]: :_files -/' \ + '--sbt-cache[path to global cache directory]: :_files -/' \ + '--ivy[path to local Ivy repository]: :_files -/' \ + '--mem[set memory options]:memory' \ + '--no-share[use all local caches; no sharing]' \ + '--no-global[uses global caches, but does not use global directory]' \ + '--jvm-debug[Turn on JVM debugging, open at the given port]:port' \ + '--batch[disable interactive mode]' \ + '--sbt-version[use the specified version of sbt]:version' \ + '--sbt-jar[use the specified jar as the sbt launcher]: :_files' \ + '--java-home[alternate JAVA_HOME]: :_files -/' \ + '1: :_sbt_commands' \ + '*:: :->args' && ret=0 -_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 + case "$state" in + (args) + case $words[1] in + (new) + local -a g8_templates=( + foundweekends/giter8.g8 + scala/scala-seed.g8 + scala/scala3.g8 + scala/hello-world.g8 + scala/scalatest-example.g8 + playframework/play-scala-seed.g8 + playframework/play-java-seed.g8 + lagom/lagom-scala.g8 + lagom/lagom-java.g8 + scala-native/scala-native.g8 + scala-native/sbt-crossproject.g8 + http4s/http4s.g8 + unfiltered/unfiltered.g8 + scalatra/scalatra-sbt.g8 + ) + _values 'g8_templates' $g8_templates + ;; + esac + ;; + esac -_describe -t commands "sbt subcommand" _sbt_commands -return 0 + return $ret +} + +(( $+functions[_sbt_commands] )) || +_sbt_commands() { + local -a commands=( + 'about:Displays basic information about sbt and the build' + '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' + 'new:Creates a new sbt build' + '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' + 'projects:Lists the names of available projects' + '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' + 'settings:Lists the settings defined for the current project' + 'shutdownall:shutdown all running sbt-launch processes' + 'tasks:Lists the tasks defined for the current project' + 'test:execute all tests' + 'test-only:execute the tests provided as arguments' + 'test-quick:execute previously failed tests' + 'update:resolve and optionally retrieve dependencies' + ) + + _describe -t subcommands 'subcommand' commands +} + +_sbt "$@" + +# 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