aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe/src/downloader/zip_downloader.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/shirabe/src/downloader/zip_downloader.rs')
-rw-r--r--crates/shirabe/src/downloader/zip_downloader.rs15
1 files changed, 15 insertions, 0 deletions
diff --git a/crates/shirabe/src/downloader/zip_downloader.rs b/crates/shirabe/src/downloader/zip_downloader.rs
index 17eeae5..3fda248 100644
--- a/crates/shirabe/src/downloader/zip_downloader.rs
+++ b/crates/shirabe/src/downloader/zip_downloader.rs
@@ -1,6 +1,7 @@
//! ref: composer/src/Composer/Downloader/ZipDownloader.php
use crate::downloader::ArchiveDownloader;
+use crate::downloader::ChangeReportInterface;
use crate::downloader::DownloaderInterface;
use crate::downloader::FileDownloader;
use crate::io::IOInterface;
@@ -553,6 +554,16 @@ impl ZipDownloader {
}
}
+impl ChangeReportInterface for ZipDownloader {
+ fn get_local_changes(
+ &self,
+ package: PackageInterfaceHandle,
+ path: &str,
+ ) -> Result<Option<String>> {
+ self.inner.get_local_changes(package, path)
+ }
+}
+
// TODO(phase-b): ZipDownloader::download is overridden with extra setup (UNZIP_COMMANDS init,
// etc.). The trait method here delegates straight to the inner FileDownloader; the bespoke
// override on the struct itself takes &mut self and is not yet routed through the trait.
@@ -562,6 +573,10 @@ impl crate::downloader::DownloaderInterface for ZipDownloader {
self.inner.get_installation_source()
}
+ fn as_change_report_interface(&self) -> Option<&dyn crate::downloader::ChangeReportInterface> {
+ Some(self)
+ }
+
async fn download(
&self,
package: PackageInterfaceHandle,