diff options
Diffstat (limited to 'cli/factory.rs')
-rw-r--r-- | cli/factory.rs | 32 |
1 files changed, 31 insertions, 1 deletions
diff --git a/cli/factory.rs b/cli/factory.rs index 32cb256a3..0b24350ed 100644 --- a/cli/factory.rs +++ b/cli/factory.rs @@ -42,6 +42,8 @@ use crate::resolver::NpmModuleLoader; use crate::resolver::SloppyImportsResolver; use crate::standalone::DenoCompileBinaryWriter; use crate::tools::check::TypeChecker; +use crate::tools::coverage::CoverageCollector; +use crate::tools::run::hmr::HmrRunner; use crate::util::file_watcher::WatcherCommunicator; use crate::util::fs::canonicalize_path_maybe_not_exists; use crate::util::import_map::deno_json_deps; @@ -50,6 +52,7 @@ use crate::util::progress_bar::ProgressBar; use crate::util::progress_bar::ProgressBarStyle; use crate::worker::CliMainWorkerFactory; use crate::worker::CliMainWorkerOptions; +use std::path::PathBuf; use deno_core::error::AnyError; use deno_core::parking_lot::Mutex; @@ -766,7 +769,6 @@ impl CliFactory { )), self.root_cert_store_provider().clone(), self.fs().clone(), - Some(self.emitter()?.clone()), maybe_file_watcher_communicator, self.maybe_inspector_server().clone(), self.maybe_lockfile().clone(), @@ -783,6 +785,32 @@ impl CliFactory { fn create_cli_main_worker_options( &self, ) -> Result<CliMainWorkerOptions, AnyError> { + let create_hmr_runner = if self.options.has_hmr() { + let watcher_communicator = self.watcher_communicator.clone().unwrap(); + let emitter = self.emitter()?.clone(); + let fn_: crate::worker::CreateHmrRunnerCb = Box::new(move |session| { + Box::new(HmrRunner::new( + emitter.clone(), + session, + watcher_communicator.clone(), + )) + }); + Some(fn_) + } else { + None + }; + let create_coverage_collector = + if let Some(coverage_dir) = self.options.coverage_dir() { + let coverage_dir = PathBuf::from(coverage_dir); + let fn_: crate::worker::CreateCoverageCollectorCb = + Box::new(move |session| { + Box::new(CoverageCollector::new(coverage_dir.clone(), session)) + }); + Some(fn_) + } else { + None + }; + Ok(CliMainWorkerOptions { argv: self.options.argv().clone(), // This optimization is only available for "run" subcommand @@ -814,6 +842,8 @@ impl CliFactory { .clone(), unstable: self.options.legacy_unstable_flag(), maybe_root_package_json_deps: self.options.maybe_package_json_deps(), + create_hmr_runner, + create_coverage_collector, }) } } |