diff options
author | Roj <ez@roj.im> | 2022-12-08 02:13:45 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-12-08 00:13:45 +0100 |
commit | 44b2b950fd20e59fca1e6dddf522d456d2fd622f (patch) | |
tree | 3a2485812c6b302476a2eeb571164b2a44aadb98 /cli/args/lockfile.rs | |
parent | dac30af1510b12b5d81d2cd437560f8be6c2e01c (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.rs | 21 |
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); } |