SCUA

Manual

scua.toml

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.