diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-05-27 00:49:33 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-05-27 00:54:09 +0900 |
| commit | cc5d73c05a0abca2eebcc8a6afa0b1543ee49850 (patch) | |
| tree | 091a0d01232d927f13f3ab22700701804980f231 /crates/shirabe/src/downloader/perforce_downloader.rs | |
| parent | c5850d62beabef0a6bcc4cf6a179589c0ba8f405 (diff) | |
| download | php-shirabe-cc5d73c05a0abca2eebcc8a6afa0b1543ee49850.tar.gz php-shirabe-cc5d73c05a0abca2eebcc8a6afa0b1543ee49850.tar.zst php-shirabe-cc5d73c05a0abca2eebcc8a6afa0b1543ee49850.zip | |
refactor(package): pass package handles by value throughout
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Diffstat (limited to 'crates/shirabe/src/downloader/perforce_downloader.rs')
| -rw-r--r-- | crates/shirabe/src/downloader/perforce_downloader.rs | 39 |
1 files changed, 21 insertions, 18 deletions
diff --git a/crates/shirabe/src/downloader/perforce_downloader.rs b/crates/shirabe/src/downloader/perforce_downloader.rs index f967111..4a54511 100644 --- a/crates/shirabe/src/downloader/perforce_downloader.rs +++ b/crates/shirabe/src/downloader/perforce_downloader.rs @@ -6,6 +6,7 @@ use crate::downloader::VcsDownloaderBase; use crate::io::IOInterface; use crate::io::IOInterfaceImmutable; use crate::package::PackageInterface; +use crate::package::PackageInterfaceHandle; use crate::repository::VcsRepository; use crate::util::Filesystem; use crate::util::Perforce; @@ -36,17 +37,17 @@ impl PerforceDownloader { pub(crate) async fn do_download( &self, - _package: &dyn PackageInterface, + _package: PackageInterfaceHandle, _path: String, _url: String, - _prev_package: Option<&dyn PackageInterface>, + _prev_package: Option<PackageInterfaceHandle>, ) -> Result<Option<PhpMixed>> { Ok(None) } pub async fn do_install( &mut self, - package: &dyn PackageInterface, + package: PackageInterfaceHandle, path: String, url: String, ) -> Result<Option<PhpMixed>> { @@ -83,13 +84,14 @@ impl PerforceDownloader { None } - pub fn init_perforce(&mut self, package: &dyn PackageInterface, path: String, url: String) { + pub fn init_perforce(&mut self, package: PackageInterfaceHandle, path: String, url: String) { if self.perforce.is_some() { self.perforce.as_mut().unwrap().initialize_path(&path); return; } - let repository = package.get_repository(); + let package_rc = package.as_rc().borrow(); + let repository = package_rc.as_package_interface().get_repository(); let repo_config: Option<IndexMap<String, PhpMixed>> = if let Some(repo) = repository { if let Some(vcs_repo) = repo.as_any().downcast_ref::<VcsRepository>() { Some(self.get_repo_config(vcs_repo)) @@ -99,6 +101,7 @@ impl PerforceDownloader { } else { None }; + drop(package_rc); self.perforce = Some(Perforce::create( repo_config.unwrap_or_default(), url, @@ -114,8 +117,8 @@ impl PerforceDownloader { pub(crate) async fn do_update( &mut self, - _initial: &dyn PackageInterface, - target: &dyn PackageInterface, + _initial: PackageInterfaceHandle, + target: PackageInterfaceHandle, path: String, url: String, ) -> Result<Option<PhpMixed>> { @@ -124,7 +127,7 @@ impl PerforceDownloader { pub fn get_local_changes( &self, - _package: &dyn PackageInterface, + _package: PackageInterfaceHandle, _path: String, ) -> Option<String> { self.inner @@ -168,9 +171,9 @@ impl DownloaderInterface for PerforceDownloader { async fn download( &self, - _package: &dyn PackageInterface, + _package: PackageInterfaceHandle, _path: &str, - _prev_package: Option<&dyn PackageInterface>, + _prev_package: Option<PackageInterfaceHandle>, _output: bool, ) -> Result<Option<PhpMixed>> { todo!() @@ -179,16 +182,16 @@ impl DownloaderInterface for PerforceDownloader { async fn prepare( &self, _type: &str, - _package: &dyn PackageInterface, + _package: PackageInterfaceHandle, _path: &str, - _prev_package: Option<&dyn PackageInterface>, + _prev_package: Option<PackageInterfaceHandle>, ) -> Result<Option<PhpMixed>> { todo!() } async fn install( &self, - _package: &dyn PackageInterface, + _package: PackageInterfaceHandle, _path: &str, _output: bool, ) -> Result<Option<PhpMixed>> { @@ -197,8 +200,8 @@ impl DownloaderInterface for PerforceDownloader { async fn update( &self, - _initial: &dyn PackageInterface, - _target: &dyn PackageInterface, + _initial: PackageInterfaceHandle, + _target: PackageInterfaceHandle, _path: &str, ) -> Result<Option<PhpMixed>> { todo!() @@ -206,7 +209,7 @@ impl DownloaderInterface for PerforceDownloader { async fn remove( &self, - _package: &dyn PackageInterface, + _package: PackageInterfaceHandle, _path: &str, _output: bool, ) -> Result<Option<PhpMixed>> { @@ -216,9 +219,9 @@ impl DownloaderInterface for PerforceDownloader { async fn cleanup( &self, _type: &str, - _package: &dyn PackageInterface, + _package: PackageInterfaceHandle, _path: &str, - _prev_package: Option<&dyn PackageInterface>, + _prev_package: Option<PackageInterfaceHandle>, ) -> Result<Option<PhpMixed>> { todo!() } |
