diff options
Diffstat (limited to 'cli/args/config_file.rs')
-rw-r--r-- | cli/args/config_file.rs | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/cli/args/config_file.rs b/cli/args/config_file.rs index 76340aa8b..16e11a5a8 100644 --- a/cli/args/config_file.rs +++ b/cli/args/config_file.rs @@ -430,6 +430,13 @@ pub struct TestConfig { } #[derive(Clone, Debug, Deserialize)] +#[serde(untagged)] +pub enum LockConfig { + Bool(bool), + PathBuf(PathBuf), +} + +#[derive(Clone, Debug, Deserialize)] #[serde(rename_all = "camelCase")] pub struct ConfigFileJson { pub compiler_options: Option<Value>, @@ -438,6 +445,7 @@ pub struct ConfigFileJson { pub fmt: Option<Value>, pub tasks: Option<Value>, pub test: Option<Value>, + pub lock: Option<Value>, } #[derive(Clone, Debug)] @@ -759,6 +767,16 @@ impl ConfigFile { bail!("No tasks found in configuration file") } } + + pub fn to_lock_config(&self) -> Result<Option<LockConfig>, AnyError> { + if let Some(config) = self.json.lock.clone() { + let lock_config: LockConfig = serde_json::from_value(config) + .context("Failed to parse \"lock\" configuration")?; + Ok(Some(lock_config)) + } else { + Ok(None) + } + } } /// Represents the "default" type library that should be used when type |