diff options
author | David Sherret <dsherret@users.noreply.github.com> | 2023-05-25 14:27:45 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-05-25 14:27:45 -0400 |
commit | 2ebd61ee1b09c8060c2da66890bf6ac024d97b67 (patch) | |
tree | 014c6d35e1f820811a2ff6dcb0e96c60f360de1f /cli/factory.rs | |
parent | 76400149a49f44b734b5cacf438722bc3c07c1d1 (diff) |
fix(compile): handle when DENO_DIR is readonly (#19257)
Closes #19253
Diffstat (limited to 'cli/factory.rs')
-rw-r--r-- | cli/factory.rs | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/cli/factory.rs b/cli/factory.rs index 3b171414f..8e20e5514 100644 --- a/cli/factory.rs +++ b/cli/factory.rs @@ -10,6 +10,7 @@ use crate::args::StorageKeyResolver; use crate::args::TsConfigType; use crate::cache::Caches; use crate::cache::DenoDir; +use crate::cache::DenoDirProvider; use crate::cache::EmitCache; use crate::cache::HttpCache; use crate::cache::NodeAnalysisCache; @@ -130,7 +131,7 @@ impl<T> Deferred<T> { #[derive(Default)] struct CliFactoryServices { - dir: Deferred<DenoDir>, + deno_dir_provider: Deferred<Arc<DenoDirProvider>>, caches: Deferred<Arc<Caches>>, file_fetcher: Deferred<Arc<FileFetcher>>, http_client: Deferred<Arc<HttpClient>>, @@ -182,16 +183,21 @@ impl CliFactory { &self.options } + pub fn deno_dir_provider(&self) -> &Arc<DenoDirProvider> { + self.services.deno_dir_provider.get_or_init(|| { + Arc::new(DenoDirProvider::new( + self.options.maybe_custom_root().clone(), + )) + }) + } + pub fn deno_dir(&self) -> Result<&DenoDir, AnyError> { - self - .services - .dir - .get_or_try_init(|| self.options.resolve_deno_dir()) + Ok(self.deno_dir_provider().get_or_create()?) } pub fn caches(&self) -> Result<&Arc<Caches>, AnyError> { self.services.caches.get_or_try_init(|| { - let caches = Arc::new(Caches::new(self.deno_dir()?.clone())); + let caches = Arc::new(Caches::new(self.deno_dir_provider().clone())); // Warm up the caches we know we'll likely need based on the CLI mode match self.options.sub_command() { DenoSubcommand::Run(_) => { |