diff options
Diffstat (limited to 'cli/tools/bench.rs')
-rw-r--r-- | cli/tools/bench.rs | 47 |
1 files changed, 30 insertions, 17 deletions
diff --git a/cli/tools/bench.rs b/cli/tools/bench.rs index 3f606cfa9..aa5bd044d 100644 --- a/cli/tools/bench.rs +++ b/cli/tools/bench.rs @@ -5,10 +5,10 @@ use crate::args::CliOptions; use crate::args::TypeCheckMode; use crate::colors; use crate::display::write_json_to_stdout; +use crate::factory::CliFactory; use crate::graph_util::graph_valid_with_cli_options; use crate::module_loader::ModuleLoadPreparer; use crate::ops; -use crate::proc_state::ProcState; use crate::tools::test::format_test_error; use crate::tools::test::TestFilter; use crate::util::file_watcher; @@ -635,12 +635,13 @@ pub async fn run_benchmarks( cli_options: CliOptions, bench_options: BenchOptions, ) -> Result<(), AnyError> { - let ps = ProcState::from_cli_options(Arc::new(cli_options)).await?; + let factory = CliFactory::from_cli_options(Arc::new(cli_options)); + let cli_options = factory.cli_options(); // Various bench files should not share the same permissions in terms of // `PermissionsContainer` - otherwise granting/revoking permissions in one // file would have impact on other files, which is undesirable. let permissions = - Permissions::from_options(&ps.options.permissions_options())?; + Permissions::from_options(&cli_options.permissions_options())?; let specifiers = collect_specifiers(&bench_options.files, is_supported_bench_path)?; @@ -649,15 +650,20 @@ pub async fn run_benchmarks( return Err(generic_error("No bench modules found")); } - check_specifiers(&ps.options, &ps.module_load_preparer, specifiers.clone()) - .await?; + check_specifiers( + cli_options, + factory.module_load_preparer().await?, + specifiers.clone(), + ) + .await?; if bench_options.no_run { return Ok(()); } - let log_level = ps.options.log_level(); - let worker_factory = Arc::new(ps.create_cli_main_worker_factory()); + let log_level = cli_options.log_level(); + let worker_factory = + Arc::new(factory.create_cli_main_worker_factory().await?); bench_specifiers( worker_factory, &permissions, @@ -678,21 +684,25 @@ pub async fn run_benchmarks_with_watch( cli_options: CliOptions, bench_options: BenchOptions, ) -> Result<(), AnyError> { - let ps = ProcState::from_cli_options(Arc::new(cli_options)).await?; + let factory = CliFactory::from_cli_options(Arc::new(cli_options)); + let cli_options = factory.cli_options(); + let module_graph_builder = factory.module_graph_builder().await?; + let file_watcher = factory.file_watcher()?; + let module_load_preparer = factory.module_load_preparer().await?; // Various bench files should not share the same permissions in terms of // `PermissionsContainer` - otherwise granting/revoking permissions in one // file would have impact on other files, which is undesirable. let permissions = - Permissions::from_options(&ps.options.permissions_options())?; - let no_check = ps.options.type_check_mode() == TypeCheckMode::None; + Permissions::from_options(&cli_options.permissions_options())?; + let no_check = cli_options.type_check_mode() == TypeCheckMode::None; let resolver = |changed: Option<Vec<PathBuf>>| { let paths_to_watch = bench_options.files.include.clone(); let paths_to_watch_clone = paths_to_watch.clone(); let files_changed = changed.is_some(); let bench_options = &bench_options; - let module_graph_builder = ps.module_graph_builder.clone(); - let cli_options = ps.options.clone(); + let module_graph_builder = module_graph_builder.clone(); + let cli_options = cli_options.clone(); async move { let bench_modules = @@ -797,15 +807,18 @@ pub async fn run_benchmarks_with_watch( }) }; + let create_cli_main_worker_factory = + factory.create_cli_main_worker_factory_func().await?; let operation = |modules_to_reload: Vec<ModuleSpecifier>| { let permissions = &permissions; let bench_options = &bench_options; - ps.reset_for_file_watcher(); - let module_load_preparer = ps.module_load_preparer.clone(); - let cli_options = ps.options.clone(); - let worker_factory = Arc::new(ps.create_cli_main_worker_factory()); + file_watcher.reset(); + let module_load_preparer = module_load_preparer.clone(); + let cli_options = cli_options.clone(); + let create_cli_main_worker_factory = create_cli_main_worker_factory.clone(); async move { + let worker_factory = Arc::new(create_cli_main_worker_factory()); let specifiers = collect_specifiers(&bench_options.files, is_supported_bench_path)? .into_iter() @@ -836,7 +849,7 @@ pub async fn run_benchmarks_with_watch( } }; - let clear_screen = !ps.options.no_clear_screen(); + let clear_screen = !cli_options.no_clear_screen(); file_watcher::watch_func( resolver, operation, |