summaryrefslogtreecommitdiff
path: root/cli/npm/resolvers
diff options
context:
space:
mode:
Diffstat (limited to 'cli/npm/resolvers')
-rw-r--r--cli/npm/resolvers/common.rs2
-rw-r--r--cli/npm/resolvers/global.rs17
-rw-r--r--cli/npm/resolvers/local.rs9
-rw-r--r--cli/npm/resolvers/mod.rs3
4 files changed, 20 insertions, 11 deletions
diff --git a/cli/npm/resolvers/common.rs b/cli/npm/resolvers/common.rs
index 4f2a6d82a..a75c86c1c 100644
--- a/cli/npm/resolvers/common.rs
+++ b/cli/npm/resolvers/common.rs
@@ -52,6 +52,8 @@ pub trait InnerNpmPackageResolver: Send + Sync {
packages: HashSet<NpmPackageReq>,
) -> BoxFuture<'static, Result<(), AnyError>>;
+ fn cache_packages(&self) -> BoxFuture<'static, Result<(), AnyError>>;
+
fn ensure_read_permission(&self, path: &Path) -> Result<(), AnyError>;
fn snapshot(&self) -> NpmResolutionSnapshot;
diff --git a/cli/npm/resolvers/global.rs b/cli/npm/resolvers/global.rs
index 093e15ded..b005cbaeb 100644
--- a/cli/npm/resolvers/global.rs
+++ b/cli/npm/resolvers/global.rs
@@ -138,11 +138,7 @@ impl InnerNpmPackageResolver for GlobalNpmPackageResolver {
packages: Vec<NpmPackageReq>,
) -> BoxFuture<'static, Result<(), AnyError>> {
let resolver = self.clone();
- async move {
- resolver.resolution.add_package_reqs(packages).await?;
- cache_packages_in_resolver(&resolver).await
- }
- .boxed()
+ async move { resolver.resolution.add_package_reqs(packages).await }.boxed()
}
fn set_package_reqs(
@@ -150,11 +146,12 @@ impl InnerNpmPackageResolver for GlobalNpmPackageResolver {
packages: HashSet<NpmPackageReq>,
) -> BoxFuture<'static, Result<(), AnyError>> {
let resolver = self.clone();
- async move {
- resolver.resolution.set_package_reqs(packages).await?;
- cache_packages_in_resolver(&resolver).await
- }
- .boxed()
+ async move { resolver.resolution.set_package_reqs(packages).await }.boxed()
+ }
+
+ fn cache_packages(&self) -> BoxFuture<'static, Result<(), AnyError>> {
+ let resolver = self.clone();
+ async move { cache_packages_in_resolver(&resolver).await }.boxed()
}
fn ensure_read_permission(&self, path: &Path) -> Result<(), AnyError> {
diff --git a/cli/npm/resolvers/local.rs b/cli/npm/resolvers/local.rs
index 5343dc2b4..9cfe61b8e 100644
--- a/cli/npm/resolvers/local.rs
+++ b/cli/npm/resolvers/local.rs
@@ -219,7 +219,6 @@ impl InnerNpmPackageResolver for LocalNpmPackageResolver {
let resolver = self.clone();
async move {
resolver.resolution.add_package_reqs(packages).await?;
- sync_resolver_with_fs(&resolver).await?;
Ok(())
}
.boxed()
@@ -232,6 +231,14 @@ impl InnerNpmPackageResolver for LocalNpmPackageResolver {
let resolver = self.clone();
async move {
resolver.resolution.set_package_reqs(packages).await?;
+ Ok(())
+ }
+ .boxed()
+ }
+
+ fn cache_packages(&self) -> BoxFuture<'static, Result<(), AnyError>> {
+ let resolver = self.clone();
+ async move {
sync_resolver_with_fs(&resolver).await?;
Ok(())
}
diff --git a/cli/npm/resolvers/mod.rs b/cli/npm/resolvers/mod.rs
index 0f1ed5d85..6225242a4 100644
--- a/cli/npm/resolvers/mod.rs
+++ b/cli/npm/resolvers/mod.rs
@@ -276,6 +276,7 @@ impl NpmPackageResolver {
}
self.inner.add_package_reqs(packages).await?;
+ self.inner.cache_packages().await?;
// If there's a lock file, update it with all discovered npm packages
if let Some(lockfile_mutex) = &self.maybe_lockfile {
@@ -287,6 +288,8 @@ impl NpmPackageResolver {
}
/// Sets package requirements to the resolver, removing old requirements and adding new ones.
+ ///
+ /// This will retrieve and resolve package information, but not cache any package files.
pub async fn set_package_reqs(
&self,
packages: HashSet<NpmPackageReq>,