Implement archiver/extractor interface
What does this MR do?
Introduces a common archiver/extractor interface so that in the future, alternative archivers/extractors can be added without requiring too many changes throughout the codebase.
Why was this MR needed?
A previous MR to replace the zip archive/extractor required many changes.
This MR is one step of many to gradually improve the performance situation, and allow new archive/extractor implementations to be introduced without as much friction.
This MR's main focus is the interface only, and introduces features such as compression levels that are not currently supported, but we know are needed.
Are there points in the code the reviewer needs to double check?
Because the legacy archivers/extractors are just used to bridge to the older code, many of the existing tests are now testing archiver/extractors through this interface.
Does this MR meet the acceptance criteria?
-
Documentation created/updated -
Added tests for this feature/bug -
In case of conflicts with master
- branch was rebased
What are the relevant issue numbers?
Edited by Kamil Trzciński (Back 2025-01-01)