From bc8a0e6e68547cf07a246b8b6c886de155dc8282 Mon Sep 17 00:00:00 2001 From: Nathan Whitaker <17734409+nathanwhit@users.noreply.github.com> Date: Fri, 28 Jun 2024 17:18:21 -0700 Subject: refactor(cli): Create wrapper around `deno_lockfile::Lockfile` (#24366) As suggested in https://github.com/denoland/deno/pull/24355#discussion_r1657875422. I wasn't able to hide the mutex stuff as much as I'd like (ended up just adding an escape hatch `inner()` method that locks the inner mutex), because you can't return references to the inner fields through a mutex. This is mostly motivated by the frozen lockfile changes --- cli/lsp/config.rs | 16 ++++++++-------- cli/lsp/language_server.rs | 4 +--- 2 files changed, 9 insertions(+), 11 deletions(-) (limited to 'cli/lsp') diff --git a/cli/lsp/config.rs b/cli/lsp/config.rs index 8238ae510..89b2a2e60 100644 --- a/cli/lsp/config.rs +++ b/cli/lsp/config.rs @@ -2,7 +2,7 @@ use super::logging::lsp_log; use crate::args::discover_npmrc; -use crate::args::read_lockfile_at_path; +use crate::args::CliLockfile; use crate::args::ConfigFile; use crate::args::FmtOptions; use crate::args::LintOptions; @@ -18,7 +18,6 @@ use deno_config::FmtOptionsConfig; use deno_config::TsConfig; use deno_core::anyhow::anyhow; use deno_core::normalize_path; -use deno_core::parking_lot::Mutex; use deno_core::serde::de::DeserializeOwned; use deno_core::serde::Deserialize; use deno_core::serde::Serialize; @@ -27,7 +26,6 @@ use deno_core::serde_json::json; use deno_core::serde_json::Value; use deno_core::ModuleSpecifier; use deno_lint::linter::LintConfig; -use deno_lockfile::Lockfile; use deno_npm::npm_rc::ResolvedNpmRc; use deno_runtime::deno_node::PackageJson; use deno_runtime::deno_permissions::PermissionsContainer; @@ -1111,7 +1109,7 @@ pub struct ConfigData { pub byonm: bool, pub node_modules_dir: Option, pub vendor_dir: Option, - pub lockfile: Option>>, + pub lockfile: Option>, pub package_json: Option>, pub npmrc: Option>, pub import_map: Option>, @@ -1553,7 +1551,7 @@ impl ConfigData { byonm, node_modules_dir, vendor_dir, - lockfile: lockfile.map(Mutex::new).map(Arc::new), + lockfile: lockfile.map(Arc::new), package_json: package_json.map(Arc::new), npmrc, import_map, @@ -1786,7 +1784,9 @@ impl ConfigTree { } } -fn resolve_lockfile_from_config(config_file: &ConfigFile) -> Option { +fn resolve_lockfile_from_config( + config_file: &ConfigFile, +) -> Option { let lockfile_path = match config_file.resolve_lockfile_path() { Ok(Some(value)) => value, Ok(None) => return None, @@ -1824,8 +1824,8 @@ fn resolve_node_modules_dir( canonicalize_path_maybe_not_exists(&node_modules_dir).ok() } -fn resolve_lockfile_from_path(lockfile_path: PathBuf) -> Option { - match read_lockfile_at_path(lockfile_path) { +fn resolve_lockfile_from_path(lockfile_path: PathBuf) -> Option { + match CliLockfile::read_from_path(lockfile_path) { Ok(value) => { if value.filename.exists() { if let Ok(specifier) = ModuleSpecifier::from_file_path(&value.filename) diff --git a/cli/lsp/language_server.rs b/cli/lsp/language_server.rs index 35bfa7f78..c4f3789ca 100644 --- a/cli/lsp/language_server.rs +++ b/cli/lsp/language_server.rs @@ -86,7 +86,6 @@ use super::tsc::TsServer; use super::urls; use crate::args::create_default_npmrc; use crate::args::get_root_cert_store; -use crate::args::write_lockfile_if_has_changes; use crate::args::CaData; use crate::args::CacheSetting; use crate::args::CliOptions; @@ -274,8 +273,7 @@ impl LanguageServer { // Update the lockfile on the file system with anything new // found after caching if let Some(lockfile) = cli_options.maybe_lockfile() { - let mut lockfile = lockfile.lock(); - if let Err(err) = write_lockfile_if_has_changes(&mut lockfile) { + if let Err(err) = &lockfile.write_if_changed() { lsp_warn!("{:#}", err); } } -- cgit v1.2.3