2 unstable releases
0.2.0 | Jan 7, 2023 |
---|---|
0.1.0 | Nov 6, 2022 |
#808 in Configuration
13KB
255 lines
Sample Config
Automatic generation of sample configs with documentation comments. Just derive the SampleConfig
trait on your config types, create an example object and generate a configuration file using that.
Usage
Example:
use sample_config::SampleConfig;
/// Example enum.
#[derive(Debug, Default, SampleConfig)]
enum ExampleEnum {
/// A.
#[default]
VariantA,
}
/// General documentation isn't used.
#[derive(Debug, Default, SampleConfig)]
struct ExampleConfig {
/// Some optional string.
string: Option<String>,
/// Some list of numbers.
numbers: Vec<usize>,
/// Enumeration of values.
value: ExampleEnum,
}
let instance = ExampleConfig::default();
let yaml_file_string = instance.generate_sample_yaml();
std::fs::write("output.yaml", &yaml_file_string).unwrap();
std::fs::remove_file("output.yaml").unwrap()
Please take a look at the tests to see more complicated examples.
Lints
This projects uses a bunch of clippy lints for higher code quality and style.
Install cargo-lints
using cargo install --git https://github.com/FlixCoder/cargo-lints
. The lints are defined in lints.toml
and can be checked by running cargo lints clippy --all-targets --workspace
.
Dependencies
~1.2–2MB
~44K SLoC