diff options
Diffstat (limited to 'crates/shirabe/src/package/archiver')
| -rw-r--r-- | crates/shirabe/src/package/archiver/archive_manager.rs | 29 |
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) + } +} |
