summaryrefslogtreecommitdiff
path: root/cli/args/lockfile.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/lockfile.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/lockfile.rs')
-rw-r--r--cli/args/lockfile.rs21
1 files changed, 18 insertions, 3 deletions
diff --git a/cli/args/lockfile.rs b/cli/args/lockfile.rs
index 0d3b2f249..012d9782e 100644
--- a/cli/args/lockfile.rs
+++ b/cli/args/lockfile.rs
@@ -10,6 +10,7 @@ use std::collections::BTreeMap;
use std::io::Write;
use std::path::PathBuf;
+use crate::args::config_file::LockConfig;
use crate::args::ConfigFile;
use crate::npm::NpmPackageId;
use crate::npm::NpmPackageReq;
@@ -104,9 +105,23 @@ impl Lockfile {
None => match maybe_config_file {
Some(config_file) => {
if config_file.specifier.scheme() == "file" {
- let mut path = config_file.specifier.to_file_path().unwrap();
- path.set_file_name("deno.lock");
- path
+ match config_file.clone().to_lock_config()? {
+ Some(LockConfig::Bool(lock)) if !lock => {
+ return Ok(None);
+ }
+ Some(LockConfig::PathBuf(lock)) => config_file
+ .specifier
+ .to_file_path()
+ .unwrap()
+ .parent()
+ .unwrap()
+ .join(lock),
+ _ => {
+ let mut path = config_file.specifier.to_file_path().unwrap();
+ path.set_file_name("deno.lock");
+ path
+ }
+ }
} else {
return Ok(None);
}