diff options
Diffstat (limited to 'cli/npm/resolvers')
-rw-r--r-- | cli/npm/resolvers/common.rs | 2 | ||||
-rw-r--r-- | cli/npm/resolvers/global.rs | 17 | ||||
-rw-r--r-- | cli/npm/resolvers/local.rs | 9 | ||||
-rw-r--r-- | cli/npm/resolvers/mod.rs | 3 |
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>, |