esp-config

Crates.ioesp-config
lib.rsesp-config
version
sourcesrc
created_at2024-10-10 10:54:02.851455
updated_at2024-10-10 10:54:02.851455
descriptionConfigure projects using esp-hal and related packages
homepage
repositoryhttps://github.com/esp-rs/esp-hal
max_upload_size
id1403700
Cargo.toml error:TOML parse error at line 18, column 1 | 18 | autolib = false | ^^^^^^^ unknown field `autolib`, expected one of `name`, `version`, `edition`, `authors`, `description`, `readme`, `license`, `repository`, `homepage`, `documentation`, `build`, `resolver`, `links`, `default-run`, `default_dash_run`, `rust-version`, `rust_dash_version`, `rust_version`, `license-file`, `license_dash_file`, `license_file`, `licenseFile`, `license_capital_file`, `forced-target`, `forced_dash_target`, `autobins`, `autotests`, `autoexamples`, `autobenches`, `publish`, `metadata`, `keywords`, `categories`, `exclude`, `include`
size0
espressif (github:esp-rs:espressif)

documentation

README

esp-config

Crates.io docs.rs MSRV Crates.io Matrix

Documentation

Usage

esp-config takes a prefix (usually the crate name) and a set of configuration keys and default values to produce a configuration system that supports:

  • Emitting rustc cfg's for boolean keys
  • Emitting environment variables for numbers
    • Along with decimal parsing, it supports Hex, Octal and Binary with the respective 0x, 0o and 0b prefixes.
  • Emitting environment variables string values

Viewing the configuration

The possible configuration values are output as a markdown table in the crates OUT_DIR with the format {prefix}_config_table.md, this can then be included into the crates top level documentation. Here is an example of the output:

Name Description Default value
ESP_HAL_PLACE_SPI_DRIVER_IN_RAM Places the SPI driver in RAM for better performance false

Setting configuration options

For any available configuration option, the environment variable or cfg is always set based on the default value specified in the table. Users can override this by setting environment variables locally in their shell or the preferred option is to utilize cargo's env section.

It's important to note that due to a bug in cargo, any modifications to the environment, local or otherwise will only get picked up on a full clean build of the project.

To see the final selected configuration another table is output to the OUT_DIR with the format {prefix}_selected_config.md.

Capturing configuration values in the downstream crate

For all supported data types, there are helper macros that emit const code for parsing the configuration values.

  • Numbers - esp_config_int!(integer_type, "ENV")
  • Strings - esp_config_str!("ENV")
  • Bool - esp_config_bool!("ENV")

In addition to environment variables, for boolean types rust cfg's are emitted in snake case without the prefix.

Minimum Supported Rust Version (MSRV)

This crate is guaranteed to compile on stable Rust 1.79 and up. It might compile with older versions but that may change in any new patch release.

License

Licensed under either of:

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.

Commit count: 1627

cargo fmt