summaryrefslogtreecommitdiff
path: root/cli/tools/run.rs
diff options
context:
space:
mode:
Diffstat (limited to 'cli/tools/run.rs')
-rw-r--r--cli/tools/run.rs66
1 files changed, 31 insertions, 35 deletions
diff --git a/cli/tools/run.rs b/cli/tools/run.rs
index 4805ea704..cbc9c3eae 100644
--- a/cli/tools/run.rs
+++ b/cli/tools/run.rs
@@ -3,7 +3,6 @@
use std::io::Read;
use deno_ast::MediaType;
-use deno_ast::ModuleSpecifier;
use deno_core::error::AnyError;
use deno_runtime::permissions::Permissions;
use deno_runtime::permissions::PermissionsContainer;
@@ -98,45 +97,42 @@ pub async fn run_from_stdin(flags: Flags) -> Result<i32, AnyError> {
// TODO(bartlomieju): this function is not handling `exit_code` set by the runtime
// code properly.
async fn run_with_watch(flags: Flags) -> Result<i32, AnyError> {
- let (sender, receiver) = tokio::sync::mpsc::unbounded_channel();
- let factory = CliFactoryBuilder::new()
- .with_watcher(sender.clone())
- .build_from_flags(flags)
- .await?;
- let file_watcher = factory.file_watcher()?;
- let cli_options = factory.cli_options();
- let clear_screen = !cli_options.no_clear_screen();
- let main_module = cli_options.resolve_main_module()?;
-
- maybe_npm_install(&factory).await?;
-
- let create_cli_main_worker_factory =
- factory.create_cli_main_worker_factory_func().await?;
- let operation = |main_module: ModuleSpecifier| {
- file_watcher.reset();
- let permissions = PermissionsContainer::new(Permissions::from_options(
- &cli_options.permissions_options(),
- )?);
- let create_cli_main_worker_factory = create_cli_main_worker_factory.clone();
-
- Ok(async move {
- let worker = create_cli_main_worker_factory()
- .create_main_worker(main_module, permissions)
- .await?;
- worker.run_for_watcher().await?;
-
- Ok(())
- })
- };
+ let clear_screen = !flags.no_clear_screen;
- util::file_watcher::watch_func2(
- receiver,
- operation,
- main_module,
+ util::file_watcher::watch_func(
+ flags,
util::file_watcher::PrintConfig {
job_name: "Process".to_string(),
clear_screen,
},
+ move |flags, sender, _changed_paths| {
+ Ok(async move {
+ let factory = CliFactoryBuilder::new()
+ .with_watcher(sender.clone())
+ .build_from_flags(flags)
+ .await?;
+ let cli_options = factory.cli_options();
+ let main_module = cli_options.resolve_main_module()?;
+
+ maybe_npm_install(&factory).await?;
+
+ if let Some(watch_paths) = cli_options.watch_paths() {
+ let _ = sender.send(watch_paths);
+ }
+
+ let permissions = PermissionsContainer::new(Permissions::from_options(
+ &cli_options.permissions_options(),
+ )?);
+ let worker = factory
+ .create_cli_main_worker_factory()
+ .await?
+ .create_main_worker(main_module, permissions)
+ .await?;
+ worker.run_for_watcher().await?;
+
+ Ok(())
+ })
+ },
)
.await?;