From f411daceacad66e0bd774fda7d3c5ef8533cc55c Mon Sep 17 00:00:00 2001 From: nsfisis Date: Tue, 26 May 2026 20:04:02 +0900 Subject: refactor(io): share IOInterface via Rc> handle Co-Authored-By: Claude Opus 4.7 --- crates/shirabe/src/repository/vcs/hg_driver.rs | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) (limited to 'crates/shirabe/src/repository/vcs/hg_driver.rs') diff --git a/crates/shirabe/src/repository/vcs/hg_driver.rs b/crates/shirabe/src/repository/vcs/hg_driver.rs index 8f40d2a..ab3bd0c 100644 --- a/crates/shirabe/src/repository/vcs/hg_driver.rs +++ b/crates/shirabe/src/repository/vcs/hg_driver.rs @@ -3,6 +3,7 @@ use crate::cache::Cache; use crate::config::Config; use crate::io::IOInterface; +use crate::io::IOInterfaceImmutable; use crate::io::io_interface; use crate::repository::vcs::VcsDriverBase; use crate::util::Filesystem; @@ -61,12 +62,12 @@ impl HgDriver { self.inner.config.borrow_mut().prohibit_url_by_config( &self.inner.url, - Some(&*self.inner.io), + Some(&*self.inner.io.borrow()), &indexmap::IndexMap::new(), )?; let hg_utils = HgUtils::new( - &*self.inner.io, + self.inner.io.clone(), &*self.inner.config.borrow(), &self.inner.process, ); @@ -308,7 +309,12 @@ impl HgDriver { Ok(self.branches.clone().unwrap_or_default()) } - pub fn supports(io: &dyn IOInterface, config: &Config, url: &str, deep: bool) -> bool { + pub fn supports( + io: std::rc::Rc>, + config: &Config, + url: &str, + deep: bool, + ) -> bool { if Preg::is_match( r"#(^(?:https?|ssh)://(?:[^@]+@)?bitbucket.org|https://(?:.*?)\.kilnhg.com)#i", url, @@ -324,7 +330,7 @@ impl HgDriver { return false; } - let mut process = crate::util::ProcessExecutor::new(io); + let mut process = crate::util::ProcessExecutor::new(Some(io.clone())); let mut output = String::new(); if process.execute_args( &["hg", "summary"].map(|s| s.to_string()).to_vec(), @@ -340,7 +346,7 @@ impl HgDriver { return false; } - let mut process = crate::util::ProcessExecutor::new(io); + let mut process = crate::util::ProcessExecutor::new(Some(io)); let mut ignored = String::new(); let exit = process.execute_args( &["hg", "identify", "--", url] -- cgit v1.3.1