aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe/src/downloader/perforce_downloader.rs
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-05-27 00:49:33 +0900
committernsfisis <nsfisis@gmail.com>2026-05-27 00:54:09 +0900
commitcc5d73c05a0abca2eebcc8a6afa0b1543ee49850 (patch)
tree091a0d01232d927f13f3ab22700701804980f231 /crates/shirabe/src/downloader/perforce_downloader.rs
parentc5850d62beabef0a6bcc4cf6a179589c0ba8f405 (diff)
downloadphp-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.rs39
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!()
}