diff options
Diffstat (limited to 'crates/shirabe/src/dependency_resolver')
5 files changed, 27 insertions, 12 deletions
diff --git a/crates/shirabe/src/dependency_resolver/operation/install_operation.rs b/crates/shirabe/src/dependency_resolver/operation/install_operation.rs index ca3286c..ef49239 100644 --- a/crates/shirabe/src/dependency_resolver/operation/install_operation.rs +++ b/crates/shirabe/src/dependency_resolver/operation/install_operation.rs @@ -48,6 +48,10 @@ impl OperationInterface for InstallOperation { fn as_install_operation(&self) -> Option<&InstallOperation> { Some(self) } + + fn get_package(&self) -> PackageInterfaceHandle { + self.package.clone() + } } impl std::fmt::Display for InstallOperation { diff --git a/crates/shirabe/src/dependency_resolver/operation/mark_alias_installed_operation.rs b/crates/shirabe/src/dependency_resolver/operation/mark_alias_installed_operation.rs index ab07b6a..28bf511 100644 --- a/crates/shirabe/src/dependency_resolver/operation/mark_alias_installed_operation.rs +++ b/crates/shirabe/src/dependency_resolver/operation/mark_alias_installed_operation.rs @@ -44,6 +44,10 @@ impl OperationInterface for MarkAliasInstalledOperation { .get_full_pretty_version(true, crate::package::DisplayMode::SourceRefIfDev), ) } + + fn get_package(&self) -> crate::package::PackageInterfaceHandle { + self.package.clone().into() + } } impl std::fmt::Display for MarkAliasInstalledOperation { diff --git a/crates/shirabe/src/dependency_resolver/operation/mark_alias_uninstalled_operation.rs b/crates/shirabe/src/dependency_resolver/operation/mark_alias_uninstalled_operation.rs index 1b107f0..3c0de33 100644 --- a/crates/shirabe/src/dependency_resolver/operation/mark_alias_uninstalled_operation.rs +++ b/crates/shirabe/src/dependency_resolver/operation/mark_alias_uninstalled_operation.rs @@ -44,6 +44,10 @@ impl OperationInterface for MarkAliasUninstalledOperation { .get_full_pretty_version(true, crate::package::DisplayMode::SourceRefIfDev), ) } + + fn get_package(&self) -> crate::package::PackageInterfaceHandle { + self.package.clone().into() + } } impl std::fmt::Display for MarkAliasUninstalledOperation { diff --git a/crates/shirabe/src/dependency_resolver/operation/uninstall_operation.rs b/crates/shirabe/src/dependency_resolver/operation/uninstall_operation.rs index efb3610..d2dd665 100644 --- a/crates/shirabe/src/dependency_resolver/operation/uninstall_operation.rs +++ b/crates/shirabe/src/dependency_resolver/operation/uninstall_operation.rs @@ -47,6 +47,10 @@ impl OperationInterface for UninstallOperation { fn as_uninstall_operation(&self) -> Option<&UninstallOperation> { Some(self) } + + fn get_package(&self) -> PackageInterfaceHandle { + self.package.clone() + } } impl std::fmt::Display for UninstallOperation { diff --git a/crates/shirabe/src/dependency_resolver/rule.rs b/crates/shirabe/src/dependency_resolver/rule.rs index 7686a3e..ef39513 100644 --- a/crates/shirabe/src/dependency_resolver/rule.rs +++ b/crates/shirabe/src/dependency_resolver/rule.rs @@ -23,6 +23,7 @@ use crate::dependency_resolver::RuleSet; use crate::package::AliasPackage; use crate::package::BasePackage; use crate::package::BasePackageHandle; +use crate::repository::RepositoryInterface; use crate::package::Link; use crate::package::PackageInterface; use crate::package::version::VersionParser; @@ -214,12 +215,11 @@ impl Rule { if PlatformRepository::is_platform_package(link.get_target()) { return false; } - // TODO(phase-c): request.get_locked_repository() exists, but its get_packages() - // returns Result while is_caused_by_lock returns bool; resolving needs the bool - // chain (also via Problem/SolverProblemsException, itself phase-c) to carry Result. - let locked_repo: Option<()> = todo!("request.get_locked_repository()"); - if let Some(_locked_repo) = locked_repo { - let packages: Vec<BasePackageHandle> = todo!("locked_repo.get_packages()"); + if let Some(locked_repo) = request.get_locked_repository() { + let packages = locked_repo + .borrow_mut() + .get_packages() + .expect("LockArrayRepository::get_packages() never fails"); for package in packages { let p = package.clone(); if p.get_name() == link.get_target() { @@ -255,12 +255,11 @@ impl Rule { if PlatformRepository::is_platform_package(package_name) { return false; } - // TODO(phase-c): request.get_locked_repository() exists, but its get_packages() - // returns Result while is_caused_by_lock returns bool; resolving needs the bool - // chain (also via Problem/SolverProblemsException, itself phase-c) to carry Result. - let locked_repo: Option<()> = todo!("request.get_locked_repository()"); - if let Some(_locked_repo) = locked_repo { - let packages: Vec<BasePackageHandle> = todo!("locked_repo.get_packages()"); + if let Some(locked_repo) = request.get_locked_repository() { + let packages = locked_repo + .borrow_mut() + .get_packages() + .expect("LockArrayRepository::get_packages() never fails"); for package in packages { let p = package.clone(); if p.get_name() == *package_name { |
