aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe/src/repository/composite_repository.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/shirabe/src/repository/composite_repository.rs')
-rw-r--r--crates/shirabe/src/repository/composite_repository.rs14
1 files changed, 9 insertions, 5 deletions
diff --git a/crates/shirabe/src/repository/composite_repository.rs b/crates/shirabe/src/repository/composite_repository.rs
index 78bbc6a..97fad44 100644
--- a/crates/shirabe/src/repository/composite_repository.rs
+++ b/crates/shirabe/src/repository/composite_repository.rs
@@ -32,12 +32,16 @@ impl CompositeRepository {
&self.repositories
}
- pub fn remove_package(&mut self, _package: PackageInterfaceHandle) {
- // TODO(phase-b): only call remove_package on WritableRepositoryInterface implementors;
- // requires a downcast helper such as `as_writable() -> Option<&mut dyn WritableRepositoryInterface>` on RepositoryInterface.
- for _repository in &mut self.repositories {
- todo!()
+ pub fn remove_package(&mut self, package: PackageInterfaceHandle) -> anyhow::Result<()> {
+ for repository in &self.repositories {
+ if let Some(writable) = repository
+ .borrow_mut()
+ .as_writable_repository_interface_mut()
+ {
+ writable.remove_package(package.clone())?;
+ }
}
+ Ok(())
}
pub fn add_repository(&mut self, repository: RepositoryInterfaceHandle) {