diff options
author | Nayeem Rahman <nayeemrmn99@gmail.com> | 2023-01-10 15:28:10 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-01-10 16:28:10 +0100 |
commit | 71ea4ef2746d7d75623a821d4832d3531a8e1654 (patch) | |
tree | 7d5d9676c5de9b32edcc2aee9a94394e4de2a19f /cli/tools/run.rs | |
parent | 0329bc69dabbcc4d57ff9d34d695ffd4ddb1de4f (diff) |
fix(watch): preserve `ProcState::file_fetcher` between restarts (#15466)
This commit changes "ProcState" to store "file_fetcher" field in an "Arc",
allowing it to be preserved between restarts and thus keeping the state
alive between the restarts. File watchers for "deno test" and "deno bench"
now reset "ProcState" between restarts.
Diffstat (limited to 'cli/tools/run.rs')
-rw-r--r-- | cli/tools/run.rs | 16 |
1 files changed, 6 insertions, 10 deletions
diff --git a/cli/tools/run.rs b/cli/tools/run.rs index 3830affed..a022a5059 100644 --- a/cli/tools/run.rs +++ b/cli/tools/run.rs @@ -1,7 +1,6 @@ // Copyright 2018-2023 the Deno authors. All rights reserved. MIT license. use std::io::Read; -use std::path::PathBuf; use std::sync::Arc; use deno_ast::MediaType; @@ -104,16 +103,13 @@ async fn run_with_watch(flags: Flags, script: String) -> Result<i32, AnyError> { let flags = Arc::new(flags); let main_module = resolve_url_or_path(&script)?; let (sender, receiver) = tokio::sync::mpsc::unbounded_channel(); + let mut ps = + ProcState::build_for_file_watcher((*flags).clone(), sender.clone()).await?; - let operation = |(sender, main_module): ( - tokio::sync::mpsc::UnboundedSender<Vec<PathBuf>>, - ModuleSpecifier, - )| { - let flags = flags.clone(); + let operation = |main_module: ModuleSpecifier| { + ps.reset_for_file_watcher(); + let ps = ps.clone(); Ok(async move { - let ps = - ProcState::build_for_file_watcher((*flags).clone(), sender.clone()) - .await?; let permissions = PermissionsContainer::new(Permissions::from_options( &ps.options.permissions_options(), )?); @@ -128,7 +124,7 @@ async fn run_with_watch(flags: Flags, script: String) -> Result<i32, AnyError> { util::file_watcher::watch_func2( receiver, operation, - (sender, main_module), + main_module, util::file_watcher::PrintConfig { job_name: "Process".to_string(), clear_screen: !flags.no_clear_screen, |