From 320c0865e90d8599ed9d2fb5113913f133fef5f3 Mon Sep 17 00:00:00 2001 From: Will Lillis Date: Tue, 11 Nov 2025 04:27:23 -0500 Subject: [PATCH] feat(cli): don't bail after first version update fails --- crates/cli/src/version.rs | 41 ++++++++++++++++++++++++++------------- 1 file changed, 27 insertions(+), 14 deletions(-) diff --git a/crates/cli/src/version.rs b/crates/cli/src/version.rs index 39cd5481..e7601186 100644 --- a/crates/cli/src/version.rs +++ b/crates/cli/src/version.rs @@ -2,7 +2,7 @@ use std::{fs, path::PathBuf, process::Command}; use anyhow::{anyhow, Context, Result}; use clap::ValueEnum; -use log::{info, warn}; +use log::{error, info, warn}; use regex::Regex; use semver::Version as SemverVersion; use std::cmp::Ordering; @@ -84,44 +84,57 @@ impl Version { let is_multigrammar = tree_sitter_json.grammars.len() > 1; - self.update_treesitter_json().with_context(|| { + let mut has_failure = false; + let mut record_failures = |result: anyhow::Result<()>| { + if let Err(e) = result { + has_failure = true; + error!("{e}"); + } + }; + + record_failures(self.update_treesitter_json().with_context(|| { format!( "Failed to update tree-sitter.json at {}", self.current_dir.display() ) - })?; - self.update_cargo_toml().with_context(|| { + })); + record_failures(self.update_cargo_toml().with_context(|| { format!( "Failed to update Cargo.toml at {}", self.current_dir.display() ) - })?; - self.update_package_json().with_context(|| { + })); + record_failures(self.update_package_json().with_context(|| { format!( "Failed to update package.json at {}", self.current_dir.display() ) - })?; - self.update_makefile(is_multigrammar).with_context(|| { + })); + record_failures(self.update_makefile(is_multigrammar).with_context(|| { format!( "Failed to update Makefile at {}", self.current_dir.display() ) - })?; - self.update_cmakelists_txt().with_context(|| { + })); + record_failures(self.update_cmakelists_txt().with_context(|| { format!( "Failed to update CMakeLists.txt at {}", self.current_dir.display() ) - })?; - self.update_pyproject_toml().with_context(|| { + })); + record_failures(self.update_pyproject_toml().with_context(|| { format!( "Failed to update pyproject.toml at {}", self.current_dir.display() ) - })?; + })); - Ok(()) + if has_failure { + // Return an empty error message to prevent double-reporting + Err(anyhow!("")) + } else { + Ok(()) + } } fn update_treesitter_json(&self) -> Result<()> {