summaryrefslogtreecommitdiff
path: root/cli/args
diff options
context:
space:
mode:
Diffstat (limited to 'cli/args')
-rw-r--r--cli/args/flags.rs12
-rw-r--r--cli/args/lockfile.rs18
2 files changed, 18 insertions, 12 deletions
diff --git a/cli/args/flags.rs b/cli/args/flags.rs
index 0ceac4563..a273d8b37 100644
--- a/cli/args/flags.rs
+++ b/cli/args/flags.rs
@@ -589,7 +589,7 @@ pub struct Flags {
pub argv: Vec<String>,
pub subcommand: DenoSubcommand,
- pub frozen_lockfile: bool,
+ pub frozen_lockfile: Option<bool>,
pub ca_stores: Option<Vec<String>>,
pub ca_data: Option<CaData>,
pub cache_blocklist: Vec<String>,
@@ -5231,7 +5231,7 @@ fn cached_only_arg_parse(flags: &mut Flags, matches: &mut ArgMatches) {
fn frozen_lockfile_arg_parse(flags: &mut Flags, matches: &mut ArgMatches) {
if let Some(&v) = matches.get_one::<bool>("frozen") {
- flags.frozen_lockfile = v;
+ flags.frozen_lockfile = Some(v);
}
}
@@ -10923,10 +10923,10 @@ mod tests {
#[test]
fn run_with_frozen_lockfile() {
let cases = [
- (Some("--frozen"), true),
- (Some("--frozen=true"), true),
- (Some("--frozen=false"), false),
- (None, false),
+ (Some("--frozen"), Some(true)),
+ (Some("--frozen=true"), Some(true)),
+ (Some("--frozen=false"), Some(false)),
+ (None, None),
];
for (flag, frozen) in cases {
let mut args = svec!["deno", "run"];
diff --git a/cli/args/lockfile.rs b/cli/args/lockfile.rs
index 953278e7d..00d1f929d 100644
--- a/cli/args/lockfile.rs
+++ b/cli/args/lockfile.rs
@@ -147,22 +147,28 @@ impl CliLockfile {
},
};
+ let root_folder = workspace.root_folder_configs();
+ // CLI flag takes precedence over the config
+ let frozen = flags.frozen_lockfile.unwrap_or_else(|| {
+ root_folder
+ .deno_json
+ .as_ref()
+ .and_then(|c| c.to_lock_config().ok().flatten().map(|c| c.frozen()))
+ .unwrap_or(false)
+ });
+
let lockfile = if flags.lock_write {
log::warn!(
"{} \"--lock-write\" flag is deprecated and will be removed in Deno 2.",
crate::colors::yellow("Warning")
);
- CliLockfile::new(
- Lockfile::new_empty(filename, true),
- flags.frozen_lockfile,
- )
+ CliLockfile::new(Lockfile::new_empty(filename, true), frozen)
} else {
- Self::read_from_path(filename, flags.frozen_lockfile)?
+ Self::read_from_path(filename, frozen)?
};
// initialize the lockfile with the workspace's configuration
let root_url = workspace.root_dir();
- let root_folder = workspace.root_folder_configs();
let config = deno_lockfile::WorkspaceConfig {
root: WorkspaceMemberConfig {
package_json_deps: pkg_json_deps(root_folder.pkg_json.as_deref()),