summaryrefslogtreecommitdiff
path: root/cli/tools/registry
diff options
context:
space:
mode:
authorDavid Sherret <dsherret@users.noreply.github.com>2024-07-23 19:00:48 -0400
committerGitHub <noreply@github.com>2024-07-23 19:00:48 -0400
commit9114a2df69da9318c4e10887553b7daf77b0fa16 (patch)
tree2309817e74485f9fe8f7b79238afa026070b79df /cli/tools/registry
parent6055629ee7f48a4e887392ccac13788aa4008249 (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')
-rw-r--r--cli/tools/registry/mod.rs10
-rw-r--r--cli/tools/registry/pm.rs19
2 files changed, 16 insertions, 13 deletions
diff --git a/cli/tools/registry/mod.rs b/cli/tools/registry/mod.rs
index 1c4e1bea7..bf9ce8586 100644
--- a/cli/tools/registry/mod.rs
+++ b/cli/tools/registry/mod.rs
@@ -72,16 +72,16 @@ use self::paths::CollectedPublishPath;
use self::tar::PublishableTarball;
pub async fn publish(
- flags: Flags,
+ flags: Arc<Flags>,
publish_flags: PublishFlags,
) -> Result<(), AnyError> {
- let cli_factory = CliFactory::from_flags(flags)?;
+ let cli_factory = CliFactory::from_flags(flags);
let auth_method =
get_auth_method(publish_flags.token, publish_flags.dry_run)?;
- let directory_path = cli_factory.cli_options().initial_cwd();
- let cli_options = cli_factory.cli_options();
+ let cli_options = cli_factory.cli_options()?;
+ let directory_path = cli_options.initial_cwd();
let publish_configs = cli_options.start_dir.jsr_packages_for_publish();
if publish_configs.is_empty() {
match cli_options.start_dir.maybe_deno_json() {
@@ -121,7 +121,7 @@ pub async fn publish(
cli_factory.module_graph_creator().await?.clone(),
cli_factory.parsed_source_cache().clone(),
cli_factory.type_checker().await?.clone(),
- cli_factory.cli_options().clone(),
+ cli_options.clone(),
specifier_unfurler,
);
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?;
}