aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe/src/package/archiver
diff options
context:
space:
mode:
Diffstat (limited to 'crates/shirabe/src/package/archiver')
-rw-r--r--crates/shirabe/src/package/archiver/archive_manager.rs29
1 files changed, 27 insertions, 2 deletions
diff --git a/crates/shirabe/src/package/archiver/archive_manager.rs b/crates/shirabe/src/package/archiver/archive_manager.rs
index 139eb9a..be911d6 100644
--- a/crates/shirabe/src/package/archiver/archive_manager.rs
+++ b/crates/shirabe/src/package/archiver/archive_manager.rs
@@ -49,9 +49,8 @@ impl ArchiveManager {
self.archivers.push(archiver);
}
- pub fn set_overwrite_files(&mut self, overwrite_files: bool) -> &mut Self {
+ pub fn set_overwrite_files(&mut self, overwrite_files: bool) {
self.overwrite_files = overwrite_files;
- self
}
pub fn get_package_filename_parts(
@@ -314,3 +313,29 @@ impl ArchiveManager {
formats
}
}
+
+// Composer's Composer::setArchiveManager() accepts any ArchiveManager subclass, so plugins may
+// swap in a replacement. The interface captures the methods reached through Composer's accessor.
+pub trait ArchiveManagerInterface: std::fmt::Debug {
+ fn archive(
+ &mut self,
+ package: CompletePackageInterfaceHandle,
+ format: String,
+ target_dir: String,
+ file_name: Option<String>,
+ ignore_filters: bool,
+ ) -> anyhow::Result<String>;
+}
+
+impl ArchiveManagerInterface for ArchiveManager {
+ fn archive(
+ &mut self,
+ package: CompletePackageInterfaceHandle,
+ format: String,
+ target_dir: String,
+ file_name: Option<String>,
+ ignore_filters: bool,
+ ) -> anyhow::Result<String> {
+ self.archive(package, format, target_dir, file_name, ignore_filters)
+ }
+}