From 7f83e785a77fbdbcada9c6714703d4e5801af82a Mon Sep 17 00:00:00 2001 From: nsfisis Date: Fri, 29 May 2026 00:16:56 +0900 Subject: refactor(io): unify IOInterface params to Rc> Co-Authored-By: Claude Opus 4.7 (1M context) --- crates/shirabe/src/command/require_command.rs | 23 +++++------------------ 1 file changed, 5 insertions(+), 18 deletions(-) (limited to 'crates/shirabe/src/command/require_command.rs') diff --git a/crates/shirabe/src/command/require_command.rs b/crates/shirabe/src/command/require_command.rs index 93ec469..f59d60f 100644 --- a/crates/shirabe/src/command/require_command.rs +++ b/crates/shirabe/src/command/require_command.rs @@ -553,17 +553,9 @@ impl RequireCommand { .borrow_mut() .deactivate_installed_plugins(); - // try/catch/finally - // TODO(phase-b): do_update borrows io from self while also needing &mut self for state - // mutations; needs an Rc on self for clean sharing. - let do_update_result = self.do_update( - input, - output, - todo!("share io reference for do_update"), - &requirements, - require_key, - remove_key, - ); + let io = self.get_io().clone(); + let do_update_result = + self.do_update(input, output, io, &requirements, require_key, remove_key); let dry_run = input.get_option("dry-run").as_bool().unwrap_or(false); let result = match do_update_result { @@ -682,7 +674,7 @@ impl RequireCommand { &mut self, input: &dyn InputInterface, output: &dyn OutputInterface, - io: &dyn IOInterface, + io: std::rc::Rc>, requirements: &IndexMap, require_key: &str, _remove_key: &str, @@ -848,12 +840,7 @@ impl RequireCommand { .borrow_mut() .set_output_progress(!input.get_option("no-progress").as_bool().unwrap_or(false)); - // TODO(phase-b): Installer::create takes std::rc::Rc> for ownership but io is a - // borrowed &dyn here; needs Rc for proper sharing. - let mut install = Installer::create( - todo!("share io as std::rc::Rc>"), - &composer_handle, - ); + let mut install = Installer::create(io.clone(), &composer_handle); let (prefer_source, prefer_dist) = self.get_preferred_install_options(&*composer.get_config().borrow(), input, false)?; -- cgit v1.3.1