diff options
Diffstat (limited to 'crates/shirabe/src/util/sync_helper.rs')
| -rw-r--r-- | crates/shirabe/src/util/sync_helper.rs | 41 |
1 files changed, 22 insertions, 19 deletions
diff --git a/crates/shirabe/src/util/sync_helper.rs b/crates/shirabe/src/util/sync_helper.rs index 7388b96..4181b23 100644 --- a/crates/shirabe/src/util/sync_helper.rs +++ b/crates/shirabe/src/util/sync_helper.rs @@ -2,7 +2,7 @@ use crate::downloader::DownloadManager; use crate::downloader::DownloaderInterface; -use crate::package::PackageInterface; +use crate::package::PackageInterfaceHandle; use crate::util::r#loop::Loop; use anyhow::Result; use shirabe_php_shim::PhpMixed; @@ -15,9 +15,9 @@ pub enum DownloaderOrManager<'a> { impl<'a> DownloaderOrManager<'a> { async fn download( &self, - package: &dyn PackageInterface, + package: PackageInterfaceHandle, path: &str, - prev_package: Option<&dyn PackageInterface>, + prev_package: Option<PackageInterfaceHandle>, ) -> Result<Option<PhpMixed>> { match self { Self::Interface(d) => d.download3(package, path, prev_package).await, @@ -28,9 +28,9 @@ impl<'a> DownloaderOrManager<'a> { async fn prepare( &self, r#type: &str, - package: &dyn PackageInterface, + package: PackageInterfaceHandle, path: &str, - prev_package: Option<&dyn PackageInterface>, + prev_package: Option<PackageInterfaceHandle>, ) -> Result<Option<PhpMixed>> { match self { Self::Interface(d) => d.prepare(r#type, package, path, prev_package).await, @@ -44,7 +44,7 @@ impl<'a> DownloaderOrManager<'a> { async fn install( &self, - package: &dyn PackageInterface, + package: PackageInterfaceHandle, path: &str, ) -> Result<Option<PhpMixed>> { match self { @@ -55,8 +55,8 @@ impl<'a> DownloaderOrManager<'a> { async fn update( &self, - package: &dyn PackageInterface, - prev_package: &dyn PackageInterface, + package: PackageInterfaceHandle, + prev_package: PackageInterfaceHandle, path: &str, ) -> Result<Option<PhpMixed>> { match self { @@ -68,9 +68,9 @@ impl<'a> DownloaderOrManager<'a> { async fn cleanup( &self, r#type: &str, - package: &dyn PackageInterface, + package: PackageInterfaceHandle, path: &str, - prev_package: Option<&dyn PackageInterface>, + prev_package: Option<PackageInterfaceHandle>, ) -> Result<Option<PhpMixed>> { match self { Self::Interface(d) => d.cleanup(r#type, package, path, prev_package).await, @@ -90,8 +90,8 @@ impl SyncHelper { r#loop: &std::rc::Rc<std::cell::RefCell<Loop>>, downloader: DownloaderOrManager<'_>, path: String, - package: &dyn PackageInterface, - prev_package: Option<&dyn PackageInterface>, + package: PackageInterfaceHandle, + prev_package: Option<PackageInterfaceHandle>, ) -> Result<()> { let r#type = if prev_package.is_some() { "update" @@ -104,7 +104,7 @@ impl SyncHelper { r#loop, Some(Box::pin(async { downloader - .download(package, &path, prev_package) + .download(package.clone(), &path, prev_package.clone()) .await .map(|_| ()) })), @@ -113,17 +113,20 @@ impl SyncHelper { r#loop, Some(Box::pin(async { downloader - .prepare(r#type, package, &path, prev_package) + .prepare(r#type, package.clone(), &path, prev_package.clone()) .await .map(|_| ()) })), )?; if r#type == "update" { - if let Some(prev) = prev_package { + if let Some(prev) = &prev_package { Self::r#await( r#loop, Some(Box::pin(async { - downloader.update(package, prev, &path).await.map(|_| ()) + downloader + .update(package.clone(), prev.clone(), &path) + .await + .map(|_| ()) })), )?; } @@ -131,7 +134,7 @@ impl SyncHelper { Self::r#await( r#loop, Some(Box::pin(async { - downloader.install(package, &path).await.map(|_| ()) + downloader.install(package.clone(), &path).await.map(|_| ()) })), )?; } @@ -143,7 +146,7 @@ impl SyncHelper { r#loop, Some(Box::pin(async { downloader - .cleanup(r#type, package, &path, prev_package) + .cleanup(r#type, package.clone(), &path, prev_package.clone()) .await .map(|_| ()) })), @@ -155,7 +158,7 @@ impl SyncHelper { r#loop, Some(Box::pin(async { downloader - .cleanup(r#type, package, &path, prev_package) + .cleanup(r#type, package.clone(), &path, prev_package.clone()) .await .map(|_| ()) })), |
