id = "sbt"
name = "sbt"
homepage = "https://www.scala-sbt.org"
description = "sbt is built for Scala and Java projects."
icon = "https://www.scala-sbt.org/assets/favicon-96x96.png"
executables = ["sbt", "sbtn"]
[dotfiles]
paths = [
"~/.sbt/1.0/*.sbt",
"~/.sbt/1.0/plugins/",
"~/.sbt/repositories",
]
exclude = [
"~/.sbt/1.0/plugins/target/",
"~/.sbt/1.0/plugins/project/",
]
secret = ["~/.sbt/.credentials"]
[commands]
format = 1
label = "Run sbt"
description = "Run sbt commands such as compile or test, optionally non-interactively. JVM options (-D, -J) and the sbt shell commands themselves are not modelled."
quality = "ai-draft"
parser = { end_of_options = "--", interleave = "permute", long_equals = true, short_attached = false, short_bundles = false }
[[commands.source]]
id = "script"
kind = "help"
url = "https://github.com/sbt/sbt/blob/develop/sbt"
revision = "develop 2026-10 (usage text of the runner script)"
evidence = """
-v | --verbose this runner is chattier
--client run sbtn (native client), and start sbt server in the background
--no-colors disable ANSI color codes
--color=auto|always|true|false|never
enable or disable ANSI color codes (sbt 1.3 and above)
--supershell=auto|always|true|false|never
enable or disable supershell (sbt 1.3 and above)
--timings display task timings report on shutdown
--mem <integer> set memory options (default: $sbt_default_mem)
--jvm-debug <port> Turn on JVM debugging, open at the given port.
--batch disable interactive mode
-d | --debug set sbt log level to debug
--sbt-version <version> use the specified version of sbt
--java-home <path> alternate JAVA_HOME
"""
[[commands.field]]
id = "commands"
label = "sbt commands"
description = "Tasks to run in order, for example clean, compile, test. Quote a command that contains spaces. Leave empty for the interactive shell."
type = "string"
position = 0
multiple = true
sources = ["script"]
[[commands.field]]
id = "batch"
label = "Batch (non-interactive)"
type = "boolean"
option = ["--batch"]
sources = ["script"]
[[commands.field]]
id = "client"
label = "Use native client (sbtn)"
type = "boolean"
option = ["--client"]
sources = ["script"]
[[commands.field]]
id = "sbt_version"
label = "sbt version"
type = "string"
option = ["--sbt-version"]
sources = ["script"]
[[commands.field]]
id = "java_home"
label = "JAVA_HOME"
type = "path"
option = ["--java-home"]
path = { kind = "directory", role = "input" }
sources = ["script"]
[[commands.field]]
id = "mem"
label = "Memory (MB)"
type = "integer"
option = ["--mem"]
sources = ["script"]
[[commands.field]]
id = "jvm_debug"
label = "JVM debug port"
type = "integer"
option = ["--jvm-debug"]
sources = ["script"]
[[commands.field]]
id = "color"
label = "Colors"
type = "enum"
option = ["--color"]
choices = [{ value = "auto", label = "Auto" }, { value = "always", label = "Always" }, { value = "true", label = "True" }, { value = "false", label = "False" }, { value = "never", label = "Never" }]
sources = ["script"]
[[commands.field]]
id = "supershell"
label = "Supershell"
type = "enum"
option = ["--supershell"]
choices = [{ value = "auto", label = "Auto" }, { value = "always", label = "Always" }, { value = "true", label = "True" }, { value = "false", label = "False" }, { value = "never", label = "Never" }]
sources = ["script"]
[[commands.field]]
id = "timings"
label = "Show task timings"
type = "boolean"
option = ["--timings"]
sources = ["script"]
[[commands.field]]
id = "debug"
label = "Debug log level"
type = "boolean"
option = ["--debug", "-d"]
sources = ["script"]
[[commands.field]]
id = "verbose"
label = "Verbose runner"
type = "boolean"
option = ["--verbose", "-v"]
sources = ["script"]
[[commands.task]]
id = "batch-run"
label = "Run commands in batch mode"
set = { batch = [true] }
lock = ["batch"]
fields = ["commands", "batch", "sbt_version", "timings", "color"]
required = ["commands"]
[[commands.task]]
id = "shell"
label = "Start the interactive shell"
fields = ["client", "sbt_version", "mem"]
[[commands.group]]
id = "basic"
label = "Basic"
fields = ["commands", "batch", "client", "sbt_version", "timings"]
[[commands.group]]
id = "advanced"
label = "Advanced"
fields = ["java_home", "mem", "jvm_debug", "color", "supershell", "debug", "verbose"]