Skip to main content

Crate cabin_core

Crate cabin_core 

Source
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_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.json contract.
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 SemVer version-requirement parsing.