summaryrefslogtreecommitdiff
path: root/cli/tools/run.rs
diff options
context:
space:
mode:
authorNayeem Rahman <nayeemrmn99@gmail.com>2023-01-10 15:28:10 +0000
committerGitHub <noreply@github.com>2023-01-10 16:28:10 +0100
commit71ea4ef2746d7d75623a821d4832d3531a8e1654 (patch)
tree7d5d9676c5de9b32edcc2aee9a94394e4de2a19f /cli/tools/run.rs
parent0329bc69dabbcc4d57ff9d34d695ffd4ddb1de4f (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.rs16
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,