summaryrefslogtreecommitdiff
path: root/cli/args/config_file.rs
diff options
context:
space:
mode:
authorRoj <ez@roj.im>2022-12-08 02:13:45 +0300
committerGitHub <noreply@github.com>2022-12-08 00:13:45 +0100
commit44b2b950fd20e59fca1e6dddf522d456d2fd622f (patch)
tree3a2485812c6b302476a2eeb571164b2a44aadb98 /cli/args/config_file.rs
parentdac30af1510b12b5d81d2cd437560f8be6c2e01c (diff)
feat(cli): support configuring the lock file in the config file (#16781)
This allows the user to completely opt out from the lock file or rename it without having to use `--no-lock` and/or `--lock` in all commands. ## Don’t Use Lock File ```json { "lock": false } ``` ## Use Lock File With a Different Name ```json { "lock": "deno2.lock" } ``` The CLI args `--no-lock` and `--lock` will always override what is in the config file. Co-authored-by: David Sherret <dsherret@users.noreply.github.com>
Diffstat (limited to 'cli/args/config_file.rs')
-rw-r--r--cli/args/config_file.rs18
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