scua.toml is a project's manifest. scua
finds it by looking next to the file you run and then upward, stopping
at the top of your repository (the first directory with a
.git) or at your home directory, so a stray manifest higher
up can never capture your script. A script with no
scua.toml above it runs exactly as if none existed.
The file is data and never runs. A scua.toml beside your
code grants no capability: those come from the command line (see Which grant wins).
default = "debug"
[package]
name = "@acme/report"
scua-version = "0.31"
[dependencies]
"@acme/json" = "1.2.0"
[build.debug]
debug = true
[build.release]
debug = false
[run]
warnings = false
[run.ci]
warnings = true
[tooling]
declarations = ["decls/gfx.scua"]
#default
The profile a run uses when you don't pass --profile. A profile is a
name used by [build.<name>],
[run.<name>] or both.
#[package]
What the project is. name is its package name.
scua-version is the oldest scua it runs on: a scua older
than that refuses to start and exits with status 3. See Requiring a minimum
scua.
#[dependencies]
The packages the project depends on, each with the minimum version it
needs. scua add writes these for you; see Modules
you depend on by name.
#[build.<profile>]
Build flags for comptime if,
one table per profile. Each key becomes a build flag your
program can read, the same as -D name=value on the command
line, which wins over the profile. See --profile.
#[run] and
[run.<profile>]
Settings for a run of the project, which your program can't see.
[run] applies to every run, and
[run.<profile>] to runs under that profile, where it
overrides [run]. Unlike
[build.<profile>], nothing here becomes a
build flag.
| Key | Values | Default | Command line |
|---|---|---|---|
warnings |
true or false |
true |
--no-warnings, --warnings |
warnings = false keeps compile warnings
off stderr for everyone who runs the project, in scua,
scua test and scua debug, as --no-warnings does. Errors
still print and still stop the run. A warning in a
--!strict file still prints, since it stops the run, and so
does the one-line notice that a package you depend on needs updating.
Your editor keeps showing every warning.
The command line wins in both directions, without an error:
--warnings shows warnings the file turns off,
--no-warnings hides them where it doesn't, and
--deny-warnings or --dep-warnings, which ask
to see or count warnings, show them too. So a project can be quiet by
default while its CI still runs scua --deny-warnings.
Any value other than true or false stops
the run with status 2 rather than being ignored. An
application bundle carries no scua.toml, so this table
doesn't apply to it.
#[tooling]
declarations lists files that describe a host's native
API to the editor and the checker, in the order you write them. See Embed SCUA in a host.