CLI Reference¶
amibake lint <paths>...
amibake resolve <manifest> [--recipes DIR] [--lockfile FILE] [--print]
amibake build <manifest> [--recipes DIR] [--out DIR] [--cache DIR]
[--assets DIR] [--no-cache] [--allow-hooks]
amibake --version
amibake --version prints the installed version and exits.
amibake <command> --help prints that subcommand's own flags.
Exit codes¶
Every subcommand returns 0 on success. lint returns 1 if any
error-severity problem was found (warnings alone still exit 0).
resolve and build return 1 on any lint failure, resolve failure,
fetch/extract error, [hook] refusal, [verify] failure, or emitter
error — in every case, a diagnostic is printed to stderr naming exactly
what went wrong before exiting.
amibake lint <paths>...¶
Validates recipes and manifests against the schema, without resolving or building anything. Each path is either:
- a directory — every
recipe.tomlbeneath it is checked (recursively); if none are found, every*.tomlbeneath it is checked as a manifest instead; - a
recipe.tomlfile — checked as a recipe; - any other
.tomlfile — checked as a manifest.
$ amibake lint recipes manifests
30 file(s) checked: 0 error(s), 0 warning(s)
Every problem is printed as it's found (file, field, what's wrong, and
the fix), then a one-line summary. This is the fast, no-network check —
run it before resolve/build, and it's exactly what CI runs first
(see the shipped .github/workflows/ci.yml).
amibake resolve <manifest>¶
Lints the manifest and every recipe in the library, then resolves
package versions, dependencies, and [requires] (OS/Kickstart/CPU/
FPU/MMU/emulator) against the chosen base and machine — producing a
deterministic build plan and a lockfile. Does not fetch, extract, or
build anything.
$ amibake resolve manifests/aros68k.toml
resolved manifests/aros68k.toml: base=aros68k, packages=[(none)]
wrote manifests/aros68k.lock.toml
| Flag | Default | Meaning |
|---|---|---|
--recipes DIR |
./recipes |
Recipe library root. |
--lockfile FILE |
<manifest>.lock.toml |
Lockfile output path. |
--print |
off | Print the lockfile to stdout instead of writing it. |
amibake build <manifest>¶
Runs resolve internally, then fetches every source (verifying
checksums, using the content-addressed cache), extracts and layers it
into an internal tree, runs the recipe's [verify] checks, and emits
every requested output format and emulator config.
$ amibake build manifests/aros68k.toml --assets assets
built manifests/aros68k.toml: base=aros68k, packages=[(none)]
wrote manifests/aros68k.hdf
wrote manifests/aros68k
| Flag | Default | Meaning |
|---|---|---|
--recipes DIR |
./recipes |
Recipe library root. |
--out DIR |
alongside the manifest | Output directory for built images/configs. |
--cache DIR |
./.amibake-cache |
Layer/archive cache root. |
--assets DIR |
none | assets/ directory for proprietary sources (OS media, ROMs) — never fetched or committed by AmiBake itself. |
--no-cache |
off | Bypass the layer cache (always re-fetch/re-extract/re-layer). |
--allow-hooks |
off | Run a recipe's [hook] script (arbitrary Python executed during the build — review it first). Without this flag, a build needing a hook fails, naming which recipe declared it. |
See Getting Started for a full walkthrough, and
Manifest Format for what output/emit in the
manifest control.