diff options
Diffstat (limited to 'crates/shirabe/src')
| -rw-r--r-- | crates/shirabe/src/command/show_command.rs | 2 | ||||
| -rw-r--r-- | crates/shirabe/src/repository/repository_utils.rs | 9 |
2 files changed, 10 insertions, 1 deletions
diff --git a/crates/shirabe/src/command/show_command.rs b/crates/shirabe/src/command/show_command.rs index 6e777a1..4f7403d 100644 --- a/crates/shirabe/src/command/show_command.rs +++ b/crates/shirabe/src/command/show_command.rs @@ -862,7 +862,7 @@ impl Command for ShowCommand { input.borrow_mut().set_option("path", PhpMixed::Bool(false)); } - for repo in RepositoryUtils::flatten_repositories(repos.clone(), false) { + for repo in RepositoryUtils::flatten_repositories(repos.clone(), true) { let r#type = if Self::same_repository(&repo, &platform_repo) { "platform" } else if locked_repo diff --git a/crates/shirabe/src/repository/repository_utils.rs b/crates/shirabe/src/repository/repository_utils.rs index 40cb4d2..c2997f3 100644 --- a/crates/shirabe/src/repository/repository_utils.rs +++ b/crates/shirabe/src/repository/repository_utils.rs @@ -3,6 +3,7 @@ use crate::package::Link; use crate::repository::CompositeRepository; use crate::repository::FilterRepository; +use crate::repository::InstalledRepository; use crate::repository::RepositoryInterfaceHandle; use indexmap::IndexMap; @@ -57,11 +58,19 @@ impl RepositoryUtils { repo }; + // PHP `InstalledRepository extends CompositeRepository`, so it must flatten too. The Rust + // port embeds the CompositeRepository instead of inheriting it, so the downcast is tried + // explicitly here. let nested = { let r = repo.borrow(); r.as_any() .downcast_ref::<CompositeRepository>() .map(|composite_repo| composite_repo.get_repositories().clone()) + .or_else(|| { + r.as_any() + .downcast_ref::<InstalledRepository>() + .map(|installed_repo| installed_repo.get_repositories().clone()) + }) }; if let Some(nested) = nested { let mut repos = Vec::new(); |
