diff options
author | David Sherret <dsherret@users.noreply.github.com> | 2024-07-23 19:00:48 -0400 |
---|---|---|
committer | GitHub <noreply@github.com> | 2024-07-23 19:00:48 -0400 |
commit | 9114a2df69da9318c4e10887553b7daf77b0fa16 (patch) | |
tree | 2309817e74485f9fe8f7b79238afa026070b79df /cli/tools/run/mod.rs | |
parent | 6055629ee7f48a4e887392ccac13788aa4008249 (diff) |
fix(upgrade): do not error if config in cwd invalid (#24689)
```
> deno upgrade
error: Unsupported lockfile version 'invalid'. Try upgrading Deno or recreating the lockfile.
V:\scratch
> V:\deno\target\debug\deno upgrade
Looking up latest version
Local deno version 1.45.3 is the most recent release
```
Closes #24517
Closes #20729
Diffstat (limited to 'cli/tools/run/mod.rs')
-rw-r--r-- | cli/tools/run/mod.rs | 32 |
1 files changed, 17 insertions, 15 deletions
diff --git a/cli/tools/run/mod.rs b/cli/tools/run/mod.rs index f70cfd066..baa8e72db 100644 --- a/cli/tools/run/mod.rs +++ b/cli/tools/run/mod.rs @@ -1,6 +1,7 @@ // Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. use std::io::Read; +use std::sync::Arc; use deno_core::error::AnyError; use deno_runtime::deno_permissions::Permissions; @@ -11,7 +12,6 @@ use crate::args::EvalFlags; use crate::args::Flags; use crate::args::WatchFlagsWithPaths; use crate::factory::CliFactory; -use crate::factory::CliFactoryBuilder; use crate::file_fetcher::File; use crate::util; use crate::util::file_watcher::WatcherRestartMode; @@ -20,7 +20,7 @@ pub mod hmr; pub async fn run_script( mode: WorkerExecutionMode, - flags: Flags, + flags: Arc<Flags>, watch: Option<WatchFlagsWithPaths>, ) -> Result<i32, AnyError> { if !flags.has_permission() && flags.has_permission_in_argv() { @@ -40,10 +40,10 @@ To grant permissions, set them before the script argument. For example: // TODO(bartlomieju): actually I think it will also fail if there's an import // map specified and bare specifier is used on the command line - let factory = CliFactory::from_flags(flags)?; + let factory = CliFactory::from_flags(flags); + let cli_options = factory.cli_options()?; let deno_dir = factory.deno_dir()?; let http_client = factory.http_client_provider(); - let cli_options = factory.cli_options(); if cli_options.unstable_sloppy_imports() { log::warn!( @@ -76,9 +76,9 @@ To grant permissions, set them before the script argument. For example: Ok(exit_code) } -pub async fn run_from_stdin(flags: Flags) -> Result<i32, AnyError> { - let factory = CliFactory::from_flags(flags)?; - let cli_options = factory.cli_options(); +pub async fn run_from_stdin(flags: Arc<Flags>) -> Result<i32, AnyError> { + let factory = CliFactory::from_flags(flags); + let cli_options = factory.cli_options()?; let main_module = cli_options.resolve_main_module()?; maybe_npm_install(&factory).await?; @@ -109,7 +109,7 @@ pub async fn run_from_stdin(flags: Flags) -> Result<i32, AnyError> { // code properly. async fn run_with_watch( mode: WorkerExecutionMode, - flags: Flags, + flags: Arc<Flags>, watch_flags: WatchFlagsWithPaths, ) -> Result<i32, AnyError> { util::file_watcher::watch_recv( @@ -122,9 +122,11 @@ async fn run_with_watch( WatcherRestartMode::Automatic, move |flags, watcher_communicator, _changed_paths| { Ok(async move { - let factory = CliFactoryBuilder::new() - .build_from_flags_for_watcher(flags, watcher_communicator.clone())?; - let cli_options = factory.cli_options(); + let factory = CliFactory::from_flags_for_watcher( + flags, + watcher_communicator.clone(), + ); + let cli_options = factory.cli_options()?; let main_module = cli_options.resolve_main_module()?; maybe_npm_install(&factory).await?; @@ -156,11 +158,11 @@ async fn run_with_watch( } pub async fn eval_command( - flags: Flags, + flags: Arc<Flags>, eval_flags: EvalFlags, ) -> Result<i32, AnyError> { - let factory = CliFactory::from_flags(flags)?; - let cli_options = factory.cli_options(); + let factory = CliFactory::from_flags(flags); + let cli_options = factory.cli_options()?; let file_fetcher = factory.file_fetcher()?; let main_module = cli_options.resolve_main_module()?; @@ -195,7 +197,7 @@ pub async fn eval_command( async fn maybe_npm_install(factory: &CliFactory) -> Result<(), AnyError> { // ensure an "npm install" is done if the user has explicitly // opted into using a managed node_modules directory - if factory.cli_options().node_modules_dir_enablement() == Some(true) { + if factory.cli_options()?.node_modules_dir_enablement() == Some(true) { if let Some(npm_resolver) = factory.npm_resolver().await?.as_managed() { npm_resolver.ensure_top_level_package_json_install().await?; } |