diff options
| author | Sakarias Johansson <sakarias.johansson@goodbyekansas.com> | 2023-01-17 19:43:40 +0100 |
|---|---|---|
| committer | Sakarias Johansson <sakarias.johansson@goodbyekansas.com> | 2023-01-17 19:43:40 +0100 |
| commit | 38e9bf130fc1075d576626f0c2ade582ccc3c57f (patch) | |
| tree | ec1d32d4610dbd7541007602847cd7d45594f314 /racer-tracer/src/config.rs | |
| parent | 03e5a88f9b7da79749370685e8f5afaf03a25b4a (diff) | |
| download | racer-tracer-38e9bf130fc1075d576626f0c2ade582ccc3c57f.tar.gz racer-tracer-38e9bf130fc1075d576626f0c2ade582ccc3c57f.tar.xz racer-tracer-38e9bf130fc1075d576626f0c2ade582ccc3c57f.zip | |
📜 Add config support
Diffstat (limited to 'racer-tracer/src/config.rs')
| -rw-r--r-- | racer-tracer/src/config.rs | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/racer-tracer/src/config.rs b/racer-tracer/src/config.rs new file mode 100644 index 0000000..109528a --- /dev/null +++ b/racer-tracer/src/config.rs @@ -0,0 +1,54 @@ +use config::File; +use serde::Deserialize; +use structopt::StructOpt; + +use crate::error::TracerError; + +#[derive(Default, Debug, Deserialize)] +pub struct Screen { + pub height: usize, + pub width: usize, +} + +#[derive(Default, Debug, Deserialize)] +pub struct RenderData { + pub samples: usize, + pub max_depth: usize, + pub recurse_depth: usize, + pub scale: usize, +} + +#[derive(StructOpt, Debug)] +#[structopt(name = "racer-tracer")] +pub struct Args { + #[structopt( + short = "c", + long = "config", + default_value = "./config.yml", + env = "CONFIG" + )] + pub config: String, +} + +#[derive(Default, Debug, Deserialize)] +pub struct Config { + #[serde(default)] + pub preview: RenderData, + + #[serde(default)] + pub render: RenderData, + + #[serde(default)] + pub screen: Screen, +} + +impl Config { + pub fn from_file(file: String) -> Result<Self, TracerError> { + config::Config::builder() + .add_source(File::from(file.as_ref())) + .build() + .map_err(|e| TracerError::Configuration(file.clone(), e.to_string()))? + .try_deserialize() + .map_err(|e| TracerError::Configuration(file, e.to_string())) + } +} |
