CABIN_* environment variable name constants and the typed
builder for the cabin run / cabin test package-execution
overlay.
Cabin is Cargo-inspired (not Cargo-compatible): the env vars
it reads on the input side and the env vars it sets on the
output side both follow Cargo's naming conventions where
the semantics line up, and diverge with CABIN_* names where
Cabin's C/C++ semantics differ. This crate is the single
source of truth for both halves so the rest of the codebase
agrees on names.
Crate boundaries:
- this crate must not run processes, read configuration files, or touch the filesystem;
- it must not depend on
cabin,cabin-build, or other higher-level crates that would create cyclic dependencies; - it consumes typed inputs and produces typed outputs (the
orchestration layer is responsible for mapping resolved
values into [
PackageEnvInputs]).
Read-side env vars
Constants for every CABIN_* variable Cabin's CLI reads
live as pub const ... : &str = "..." in this crate. The
orchestration layer reads each one through std::env::var
(or an injected env_fn for tests) and threads the value
through to the right resolver.
Run / test overlay
cabin run and cabin test inject exactly the same small,
stable set of package-execution variables built by
[package_env]. The overlay is layered on top of the
inherited environment; it never clears the user's PATH,
LANG, etc.