From 5e31fa33c3b5cf726a57a063b8e7a070869250fe Mon Sep 17 00:00:00 2001 From: nsfisis Date: Tue, 19 May 2026 21:46:01 +0900 Subject: fix(compile): fix more random compile errors Co-Authored-By: Claude Opus 4.7 (1M context) --- crates/shirabe/src/downloader/path_downloader.rs | 103 +++++++++++------------ 1 file changed, 49 insertions(+), 54 deletions(-) (limited to 'crates/shirabe/src/downloader/path_downloader.rs') diff --git a/crates/shirabe/src/downloader/path_downloader.rs b/crates/shirabe/src/downloader/path_downloader.rs index a525df0..26795f3 100644 --- a/crates/shirabe/src/downloader/path_downloader.rs +++ b/crates/shirabe/src/downloader/path_downloader.rs @@ -117,12 +117,12 @@ impl PathDownloader { if realpath(&path).as_deref() == Some(&real_url) { if output { let appendix = self.get_install_operation_appendix(package, &path)?; - self.inner.io.write_error( - PhpMixed::String(format!( + self.inner.io.write_error3( + &format!( " - {}{}", InstallOperation::format(package, false), appendix - )), + ), true, io_interface::NORMAL, ); @@ -141,14 +141,11 @@ impl PathDownloader { self.compute_allowed_strategies(&transport_options)?; let symfony_filesystem = SymfonyFilesystem::new(None); - self.inner.filesystem.remove_directory(&path); + self.inner.filesystem.borrow_mut().remove_directory(&path); if output { - self.inner.io.write_error( - PhpMixed::String(format!( - " - {}: ", - InstallOperation::format(package, false) - )), + self.inner.io.write_error3( + &format!(" - {}: ", InstallOperation::format(package, false)), false, io_interface::NORMAL, ); @@ -160,18 +157,22 @@ impl PathDownloader { if Platform::is_windows() { // Implement symlinks as NTFS junctions on Windows if output { - self.inner.io.write_error( - PhpMixed::String(format!("Junctioning from {}", url)), + self.inner.io.write_error3( + &format!("Junctioning from {}", url), false, io_interface::NORMAL, ); } - Ok(self.inner.filesystem.junction(&real_url, &path)) + Ok(self + .inner + .filesystem + .borrow_mut() + .junction(&real_url, &path)) } else { let path = path.trim_end_matches('/').to_string(); if output { - self.inner.io.write_error( - PhpMixed::String(format!("Symlinking from {}", url)), + self.inner.io.write_error3( + &format!("Symlinking from {}", url), false, io_interface::NORMAL, ); @@ -181,17 +182,18 @@ impl PathDownloader { .and_then(|v| v.as_bool()) .unwrap_or(false) { - let absolute_path = if !self.inner.filesystem.is_absolute_path(&path) { - format!( - "{}{}{}", - Platform::get_cwd(false), - DIRECTORY_SEPARATOR, - path - ) - } else { - path.clone() - }; - let shortest_path = self.inner.filesystem.find_shortest_path( + let absolute_path = + if !self.inner.filesystem.borrow_mut().is_absolute_path(&path) { + format!( + "{}{}{}", + Platform::get_cwd(false), + DIRECTORY_SEPARATOR, + path + ) + } else { + path.clone() + }; + let shortest_path = self.inner.filesystem.borrow_mut().find_shortest_path( &absolute_path, &real_url, false, @@ -209,16 +211,9 @@ impl PathDownloader { Err(_e) => { if allowed_strategies.contains(&Self::STRATEGY_MIRROR) { if output { - self.inner.io.write_error( - PhpMixed::String("".to_string()), - true, - io_interface::NORMAL, - ); - self.inner.io.write_error( - PhpMixed::String( - " Symlink failed, fallback to use mirroring!" - .to_string(), - ), + self.inner.io.write_error3("", true, io_interface::NORMAL); + self.inner.io.write_error3( + " Symlink failed, fallback to use mirroring!", true, io_interface::NORMAL, ); @@ -241,15 +236,15 @@ impl PathDownloader { // Fallback if symlink failed or if symlink is not allowed for the package if Self::STRATEGY_MIRROR == current_strategy { - let real_url = self.inner.filesystem.normalize_path(&real_url); + let real_url = self.inner.filesystem.borrow_mut().normalize_path(&real_url); if output { - self.inner.io.write_error( - PhpMixed::String(format!( + self.inner.io.write_error3( + &format!( "{}Mirroring from {}", if is_fallback { " " } else { "" }, url - )), + ), false, io_interface::NORMAL, ); @@ -280,24 +275,24 @@ impl PathDownloader { // process inadvertently locks the file the removal will fail, but it would fall back to recursive // delete which is disastrous within a junction. So in that case we have no other real choice but // to fail hard. - if Platform::is_windows() && self.inner.filesystem.is_junction(&path) { + if Platform::is_windows() && self.inner.filesystem.borrow_mut().is_junction(&path) { if output { - self.inner.io.write_error( - PhpMixed::String(format!( + self.inner.io.write_error3( + &format!( " - {}, source is still present in {}", UninstallOperation::format(package, false), path - )), + ), true, io_interface::NORMAL, ); } - if !self.inner.filesystem.remove_junction(&path) { - self.inner.io.write_error( - PhpMixed::String(format!( + if !self.inner.filesystem.borrow_mut().remove_junction(&path)? { + self.inner.io.write_error3( + &format!( " Could not remove junction at {} - is another process locking it?", path - )), + ), true, io_interface::NORMAL, ); @@ -339,12 +334,12 @@ impl PathDownloader { }; if fs.normalize_path(&abs_path) == fs.normalize_path(&abs_dist_url) { if output { - self.inner.io.write_error( - PhpMixed::String(format!( + self.inner.io.write_error3( + &format!( " - {}, source is still present in {}", UninstallOperation::format(package, false), path - )), + ), true, io_interface::NORMAL, ); @@ -360,10 +355,10 @@ impl PathDownloader { let path = Filesystem::trim_trailing_slash(path); let parser = VersionParser::new(); let guesser = VersionGuesser::new( - &self.inner.config, - &self.inner.process, - &parser, - Some(&*self.inner.io), + std::rc::Rc::clone(&self.inner.config), + std::rc::Rc::clone(&self.inner.process), + parser.clone(), + Some(self.inner.io.clone_box()), ); let dumper = ArrayDumper::new(); -- cgit v1.3.1