aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe/src/installer/suggested_packages_reporter.rs
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-05-27 00:49:33 +0900
committernsfisis <nsfisis@gmail.com>2026-05-27 00:54:09 +0900
commitcc5d73c05a0abca2eebcc8a6afa0b1543ee49850 (patch)
tree091a0d01232d927f13f3ab22700701804980f231 /crates/shirabe/src/installer/suggested_packages_reporter.rs
parentc5850d62beabef0a6bcc4cf6a179589c0ba8f405 (diff)
downloadphp-shirabe-cc5d73c05a0abca2eebcc8a6afa0b1543ee49850.tar.gz
php-shirabe-cc5d73c05a0abca2eebcc8a6afa0b1543ee49850.tar.zst
php-shirabe-cc5d73c05a0abca2eebcc8a6afa0b1543ee49850.zip
refactor(package): pass package handles by value throughout
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Diffstat (limited to 'crates/shirabe/src/installer/suggested_packages_reporter.rs')
-rw-r--r--crates/shirabe/src/installer/suggested_packages_reporter.rs24
1 files changed, 13 insertions, 11 deletions
diff --git a/crates/shirabe/src/installer/suggested_packages_reporter.rs b/crates/shirabe/src/installer/suggested_packages_reporter.rs
index 8faae9c..087e1b5 100644
--- a/crates/shirabe/src/installer/suggested_packages_reporter.rs
+++ b/crates/shirabe/src/installer/suggested_packages_reporter.rs
@@ -2,7 +2,7 @@
use crate::io::IOInterface;
use crate::io::IOInterfaceImmutable;
-use crate::package::PackageInterface;
+use crate::package::PackageInterfaceHandle;
use crate::repository::InstalledRepository;
use crate::repository::RepositoryInterface;
use indexmap::IndexMap;
@@ -41,8 +41,8 @@ impl SuggestedPackagesReporter {
self
}
- pub fn add_suggestions_from_package(&mut self, package: &dyn PackageInterface) -> &mut Self {
- let source = package.get_pretty_name().to_string();
+ pub fn add_suggestions_from_package(&mut self, package: PackageInterfaceHandle) -> &mut Self {
+ let source = package.get_pretty_name();
for (target, reason) in package.get_suggests() {
self.add_package(source.clone(), target.clone(), reason.clone());
}
@@ -54,9 +54,10 @@ impl SuggestedPackagesReporter {
&self,
mode: i64,
installed_repo: Option<&InstalledRepository>,
- only_dependents_of: Option<&dyn PackageInterface>,
+ only_dependents_of: Option<PackageInterfaceHandle>,
) {
- let suggested_packages = self.get_filtered_suggestions(installed_repo, only_dependents_of);
+ let suggested_packages =
+ self.get_filtered_suggestions(installed_repo, only_dependents_of.clone());
let mut suggesters: IndexMap<String, IndexMap<String, String>> = IndexMap::new();
let mut suggested: IndexMap<String, IndexMap<String, String>> = IndexMap::new();
@@ -142,7 +143,7 @@ impl SuggestedPackagesReporter {
pub fn output_minimalistic(
&self,
installed_repo: Option<&InstalledRepository>,
- only_dependents_of: Option<&dyn PackageInterface>,
+ only_dependents_of: Option<PackageInterfaceHandle>,
) {
let suggested_packages = self.get_filtered_suggestions(installed_repo, only_dependents_of);
if !suggested_packages.is_empty() {
@@ -156,7 +157,7 @@ impl SuggestedPackagesReporter {
fn get_filtered_suggestions(
&self,
installed_repo: Option<&InstalledRepository>,
- only_dependents_of: Option<&dyn PackageInterface>,
+ only_dependents_of: Option<PackageInterfaceHandle>,
) -> Vec<IndexMap<String, String>> {
let suggested_packages = self.get_packages();
let mut installed_names: Vec<String> = Vec::new();
@@ -168,13 +169,14 @@ impl SuggestedPackagesReporter {
let mut source_filter: Vec<String> = Vec::new();
if let Some(only_dependents_of) = only_dependents_of {
- source_filter = only_dependents_of
- .get_requires()
+ let requires = only_dependents_of.get_requires();
+ let dev_requires = only_dependents_of.get_dev_requires();
+ source_filter = requires
.values()
- .chain(only_dependents_of.get_dev_requires().values())
+ .chain(dev_requires.values())
.map(|link| link.get_target().to_string())
.collect();
- source_filter.push(only_dependents_of.get_name().to_string());
+ source_filter.push(only_dependents_of.get_name());
}
let mut suggestions: Vec<IndexMap<String, String>> = Vec::new();