Expand description
Stable internal data model for Cabin.
This crate defines the validated, format-agnostic types that the rest of
the workspace builds on. Manifest parsing, the CLI, and (later) the build
graph all consume the same Package value, so changes here ripple
everywhere — keep this surface small.
Crate boundaries:
- this crate must not depend on
clap,toml, or any raw manifest Structs; - manifest-shaped serde structs live in
cabin-manifest; - CLI dispatch lives in
cabin.
Re-exports§
pub use build_flags::BuildFlagsValidationError;pub use build_flags::ConditionalProfileFlags;pub use build_flags::ProfileFlags;pub use build_flags::ProfileSettings;pub use build_flags::ResolvedProfileFlags;pub use build_flags::resolve_build_flags;pub use build_jobs::BuildJobs;pub use build_jobs::BuildJobsParseError;pub use compiler::ArchiverCapabilities;pub use compiler::ArchiverIdentity;pub use compiler::ArchiverKind;pub use compiler::Capability;pub use compiler::CapabilitySource;pub use compiler::CompilerCapabilities;pub use compiler::CompilerIdentity;pub use compiler::CompilerKind;pub use compiler::CompilerVersion;pub use compiler::ToolDetection;pub use compiler::ToolDetectionError;pub use compiler::ToolchainDetectionReport;pub use compiler::derive_ar_capabilities;pub use compiler::derive_cxx_capabilities;pub use compiler::parse_ar_version_output;pub use compiler::parse_cxx_version_output;pub use compiler::validate_ar_for_backend;pub use compiler::validate_cc_for_backend;pub use compiler::validate_cxx_for_backend;pub use compiler_wrapper::CompilerWrapperIdentity;pub use compiler_wrapper::CompilerWrapperKind;pub use compiler_wrapper::CompilerWrapperManifestSettings;pub use compiler_wrapper::CompilerWrapperParseError;pub use compiler_wrapper::CompilerWrapperRequest;pub use compiler_wrapper::CompilerWrapperSource;pub use compiler_wrapper::CompilerWrapperSummary;pub use compiler_wrapper::ConditionalCompilerWrapperDecl;pub use compiler_wrapper::ResolvedCompilerWrapper;pub use condition::Condition;pub use condition::ConditionKey;pub use condition::ConditionParseError;pub use condition::TargetPlatform;pub use config::BuildConfiguration;pub use config::BuildConfigurationInput;pub use config::DEFAULT_FEATURE_KEY;pub use config::FeatureEntry;pub use config::Features;pub use config::InvalidFeatureEntryKind;pub use config::SelectionRequest;pub use config::ToolchainSummary;pub use config_source::ConfigValueSource;pub use error::ValidationError;pub use model::Dependency;pub use model::DependencyKind;pub use model::DependencySource;pub use model::Package;pub use model::PackageConfigInput;pub use model::PackageName;pub use model::PortDepSource;pub use model::SystemDependency;pub use model::Target;pub use model::TargetKind;pub use model::TargetName;pub use model::is_path_safe_package_name;pub use patch::DeclaredPatch;pub use patch::PatchManifestSettings;pub use patch::PatchProvenance;pub use patch::PatchSource;pub use patch::PatchSourceKind;pub use patch::PatchValidationError;pub use profile::BuiltinProfile;pub use profile::InvalidProfileName;pub use profile::OptLevel;pub use profile::ProfileDefaults;pub use profile::ProfileDefinition;pub use profile::ProfileName;pub use profile::ProfileResolutionError;pub use profile::ProfileSelection;pub use profile::ProfileSource;pub use profile::ResolvedProfile;pub use profile::available_profile_names;pub use profile::resolve_profile;pub use source_language::SourceLanguage;pub use source_language::classify_source;pub use source_language::link_driver_language;pub use source_replacement::SourceLocator;pub use source_replacement::SourceReplacementEntry;pub use source_replacement::SourceReplacementError;pub use source_replacement::SourceReplacementResolution;pub use source_replacement::SourceReplacementSettings;pub use term_color::ColorChoice;pub use term_color::ColorEnvError;pub use term_color::InvalidColorChoice;pub use term_verbosity::InvalidVerbosityCombination;pub use term_verbosity::Verbosity;pub use term_verbosity::VerbosityEnvError;pub use toolchain::ConditionalToolchainDecl;pub use toolchain::ResolvedTool;pub use toolchain::ResolvedToolchain;pub use toolchain::ToolKind;pub use toolchain::ToolSelection;pub use toolchain::ToolSource;pub use toolchain::ToolSpec;pub use toolchain::ToolchainDecl;pub use toolchain::ToolchainResolutionError;pub use toolchain::ToolchainSelection;pub use toolchain::ToolchainSettings;
Modules§
- build_
flags - Typed semantic build flags.
- build_
jobs - Typed model for build-backend parallelism.
- compiler
- Typed compiler / tool identity and capability model.
- compiler_
wrapper - Typed compiler-cache wrapper model.
- condition
- Typed model for
cfg(...)target-condition expressions. - config
- Features — public, additive, named-boolean capabilities used to gate optional dependencies and per-edge feature requests.
- config_
source - Where an effective configuration value came from, across the full precedence chain that combines CLI flags, environment variables, config files, manifest declarations, and built-in defaults.
- error
- hash
- Shared hash-encoding helpers used across the workspace.
- model
- patch
- Typed patch / override model.
- profile
- Build profiles.
- registry
- Shared file-registry
config.jsoncontract. - source_
language - Source-file language classification.
- source_
replacement - Typed source-replacement model.
- term_
color - Typed model for Cabin’s terminal-color choice.
- term_
verbosity - Typed model for Cabin’s terminal-output verbosity.
- toolchain
- Typed C/C++ toolchain selection model.
- version_
req - Lenient
SemVerversion-requirement parsing.