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/registry/pm.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/registry/pm.rs')
-rw-r--r-- | cli/tools/registry/pm.rs | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/cli/tools/registry/pm.rs b/cli/tools/registry/pm.rs index 4573f196d..233e68240 100644 --- a/cli/tools/registry/pm.rs +++ b/cli/tools/registry/pm.rs @@ -119,9 +119,9 @@ impl DenoOrPackageJson { /// creates a `deno.json` file - in this case /// we also return a new `CliFactory` that knows about /// the new config - fn from_flags(flags: Flags) -> Result<(Self, CliFactory), AnyError> { - let factory = CliFactory::from_flags(flags.clone())?; - let options = factory.cli_options(); + fn from_flags(flags: Arc<Flags>) -> Result<(Self, CliFactory), AnyError> { + let factory = CliFactory::from_flags(flags.clone()); + let options = factory.cli_options()?; let start_dir = &options.start_dir; match (start_dir.maybe_deno_json(), start_dir.maybe_pkg_json()) { @@ -142,8 +142,8 @@ impl DenoOrPackageJson { .context("Failed to create deno.json file")?; drop(factory); // drop to prevent use log::info!("Created deno.json configuration file."); - let factory = CliFactory::from_flags(flags.clone())?; - let options = factory.cli_options().clone(); + let factory = CliFactory::from_flags(flags.clone()); + let options = factory.cli_options()?.clone(); let start_dir = &options.start_dir; Ok(( DenoOrPackageJson::Deno( @@ -175,7 +175,10 @@ fn package_json_dependency_entry( } } -pub async fn add(flags: Flags, add_flags: AddFlags) -> Result<(), AnyError> { +pub async fn add( + flags: Arc<Flags>, + add_flags: AddFlags, +) -> Result<(), AnyError> { let (config_file, cli_factory) = DenoOrPackageJson::from_flags(flags.clone())?; @@ -307,9 +310,9 @@ pub async fn add(flags: Flags, add_flags: AddFlags) -> Result<(), AnyError> { // clear the previously cached package.json from memory before reloading it deno_node::PackageJsonThreadLocalCache::clear(); // make a new CliFactory to pick up the updated config file - let cli_factory = CliFactory::from_flags(flags)?; + let cli_factory = CliFactory::from_flags(flags); // cache deps - if cli_factory.cli_options().enable_future_features() { + if cli_factory.cli_options()?.enable_future_features() { crate::module_loader::load_top_level_deps(&cli_factory).await?; } |