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/installer/binary_installer.rs | 5 +++-- crates/shirabe/src/installer/installation_manager.rs | 5 +++-- crates/shirabe/src/installer/installer_event.rs | 8 ++++---- crates/shirabe/src/installer/library_installer.rs | 4 ++-- crates/shirabe/src/installer/metapackage_installer.rs | 5 +++-- crates/shirabe/src/installer/package_event.rs | 8 ++++---- crates/shirabe/src/installer/plugin_installer.rs | 3 ++- crates/shirabe/src/installer/suggested_packages_reporter.rs | 5 +++-- 8 files changed, 24 insertions(+), 19 deletions(-) (limited to 'crates/shirabe/src/installer') diff --git a/crates/shirabe/src/installer/binary_installer.rs b/crates/shirabe/src/installer/binary_installer.rs index 54e1143..a555d83 100644 --- a/crates/shirabe/src/installer/binary_installer.rs +++ b/crates/shirabe/src/installer/binary_installer.rs @@ -10,6 +10,7 @@ use shirabe_php_shim::{ }; use crate::io::IOInterface; +use crate::io::IOInterfaceImmutable; use crate::package::PackageInterface; use crate::util::Filesystem; use crate::util::Platform; @@ -21,14 +22,14 @@ use crate::util::Silencer; pub struct BinaryInstaller { pub(crate) bin_dir: String, pub(crate) bin_compat: String, - pub(crate) io: Box, + pub(crate) io: std::rc::Rc>, pub(crate) filesystem: std::rc::Rc>, vendor_dir: Option, } impl BinaryInstaller { pub fn new( - io: Box, + io: std::rc::Rc>, bin_dir: String, bin_compat: String, filesystem: Option>>, diff --git a/crates/shirabe/src/installer/installation_manager.rs b/crates/shirabe/src/installer/installation_manager.rs index 3e455b4..5f312b6 100644 --- a/crates/shirabe/src/installer/installation_manager.rs +++ b/crates/shirabe/src/installer/installation_manager.rs @@ -23,6 +23,7 @@ use crate::installer::PackageEvents; use crate::installer::PluginInstaller; use crate::io::ConsoleIO; use crate::io::IOInterface; +use crate::io::IOInterfaceImmutable; use crate::package::PackageInterface; use crate::package::PackageInterfaceHandle; use crate::repository::InstalledRepositoryInterface; @@ -39,7 +40,7 @@ pub struct InstallationManager { /// @var array> notifiable_packages: IndexMap>, loop_: std::rc::Rc>, - io: Box, + io: std::rc::Rc>, event_dispatcher: Option>>, output_progress: bool, } @@ -47,7 +48,7 @@ pub struct InstallationManager { impl InstallationManager { pub fn new( loop_: std::rc::Rc>, - io: Box, + io: std::rc::Rc>, event_dispatcher: Option>>, ) -> Self { Self { diff --git a/crates/shirabe/src/installer/installer_event.rs b/crates/shirabe/src/installer/installer_event.rs index 3c02b7f..5adde1c 100644 --- a/crates/shirabe/src/installer/installer_event.rs +++ b/crates/shirabe/src/installer/installer_event.rs @@ -9,7 +9,7 @@ use crate::io::IOInterface; pub struct InstallerEvent { inner: Event, composer: ComposerWeakHandle, - io: Box, + io: std::rc::Rc>, dev_mode: bool, execute_operations: bool, transaction: Transaction, @@ -19,7 +19,7 @@ impl InstallerEvent { pub fn new( event_name: String, composer: ComposerWeakHandle, - io: Box, + io: std::rc::Rc>, dev_mode: bool, execute_operations: bool, transaction: Transaction, @@ -39,8 +39,8 @@ impl InstallerEvent { &self.composer } - pub fn get_io(&self) -> &dyn IOInterface { - self.io.as_ref() + pub fn get_io(&self) -> std::rc::Rc> { + self.io.clone() } pub fn is_dev_mode(&self) -> bool { diff --git a/crates/shirabe/src/installer/library_installer.rs b/crates/shirabe/src/installer/library_installer.rs index 332bdea..17ec8d4 100644 --- a/crates/shirabe/src/installer/library_installer.rs +++ b/crates/shirabe/src/installer/library_installer.rs @@ -28,7 +28,7 @@ pub struct LibraryInstaller { pub(crate) composer: PartialComposerWeakHandle, pub(crate) vendor_dir: String, pub(crate) download_manager: Option>>, - pub(crate) io: Box, + pub(crate) io: std::rc::Rc>, pub(crate) r#type: Option, pub(crate) filesystem: std::rc::Rc>, pub(crate) binary_installer: BinaryInstaller, @@ -37,7 +37,7 @@ pub struct LibraryInstaller { impl LibraryInstaller { /// Initializes library installer. pub fn new( - io: Box, + io: std::rc::Rc>, composer: PartialComposerWeakHandle, r#type: Option, filesystem: Option>>, diff --git a/crates/shirabe/src/installer/metapackage_installer.rs b/crates/shirabe/src/installer/metapackage_installer.rs index cda7bf0..fe41dd3 100644 --- a/crates/shirabe/src/installer/metapackage_installer.rs +++ b/crates/shirabe/src/installer/metapackage_installer.rs @@ -5,6 +5,7 @@ use crate::dependency_resolver::operation::UninstallOperation; use crate::dependency_resolver::operation::UpdateOperation; use crate::installer::InstallerInterface; use crate::io::IOInterface; +use crate::io::IOInterfaceImmutable; use crate::io::io_interface; use crate::package::PackageInterface; use crate::package::PackageInterfaceHandle; @@ -14,11 +15,11 @@ use shirabe_php_shim::{InvalidArgumentException, PhpMixed}; #[derive(Debug)] pub struct MetapackageInstaller { - io: Box, + io: std::rc::Rc>, } impl MetapackageInstaller { - pub fn new(io: Box) -> Self { + pub fn new(io: std::rc::Rc>) -> Self { Self { io } } } diff --git a/crates/shirabe/src/installer/package_event.rs b/crates/shirabe/src/installer/package_event.rs index d0aecc8..342732d 100644 --- a/crates/shirabe/src/installer/package_event.rs +++ b/crates/shirabe/src/installer/package_event.rs @@ -11,7 +11,7 @@ use indexmap::IndexMap; pub struct PackageEvent { inner: Event, composer: ComposerWeakHandle, - io: Box, + io: std::rc::Rc>, dev_mode: bool, local_repo: Box, operations: Vec>, @@ -22,7 +22,7 @@ impl PackageEvent { pub fn new( event_name: String, composer: ComposerWeakHandle, - io: Box, + io: std::rc::Rc>, dev_mode: bool, local_repo: Box, operations: Vec>, @@ -47,8 +47,8 @@ impl PackageEvent { &self.composer } - pub fn get_io(&self) -> &dyn IOInterface { - self.io.as_ref() + pub fn get_io(&self) -> std::rc::Rc> { + self.io.clone() } pub fn is_dev_mode(&self) -> bool { diff --git a/crates/shirabe/src/installer/plugin_installer.rs b/crates/shirabe/src/installer/plugin_installer.rs index 2135bb3..deadcb7 100644 --- a/crates/shirabe/src/installer/plugin_installer.rs +++ b/crates/shirabe/src/installer/plugin_installer.rs @@ -5,6 +5,7 @@ use crate::installer::BinaryInstaller; use crate::installer::InstallerInterface; use crate::installer::LibraryInstaller; use crate::io::IOInterface; +use crate::io::IOInterfaceImmutable; use crate::package::PackageInterface; use crate::package::PackageInterfaceHandle; use crate::plugin::PluginManager; @@ -21,7 +22,7 @@ pub struct PluginInstaller { impl PluginInstaller { pub fn new( - io: Box, + io: std::rc::Rc>, composer: PartialComposerWeakHandle, fs: Option>>, binary_installer: Option, diff --git a/crates/shirabe/src/installer/suggested_packages_reporter.rs b/crates/shirabe/src/installer/suggested_packages_reporter.rs index fc4165a..8faae9c 100644 --- a/crates/shirabe/src/installer/suggested_packages_reporter.rs +++ b/crates/shirabe/src/installer/suggested_packages_reporter.rs @@ -1,6 +1,7 @@ //! ref: composer/src/Composer/Installer/SuggestedPackagesReporter.php use crate::io::IOInterface; +use crate::io::IOInterfaceImmutable; use crate::package::PackageInterface; use crate::repository::InstalledRepository; use crate::repository::RepositoryInterface; @@ -11,7 +12,7 @@ use shirabe_external_packages::symfony::component::console::formatter::OutputFor #[derive(Debug)] pub struct SuggestedPackagesReporter { suggested_packages: Vec>, - io: Box, + io: std::rc::Rc>, } impl SuggestedPackagesReporter { @@ -19,7 +20,7 @@ impl SuggestedPackagesReporter { pub const MODE_BY_PACKAGE: i64 = 2; pub const MODE_BY_SUGGESTION: i64 = 4; - pub fn new(io: Box) -> Self { + pub fn new(io: std::rc::Rc>) -> Self { Self { suggested_packages: Vec::new(), io, -- cgit v1.3.1