From 3ef7095aa0c8cdb6c1f15d46304bbe8c2e6393d6 Mon Sep 17 00:00:00 2001 From: nsfisis Date: Sat, 22 Aug 2026 19:47:23 +0900 Subject: fix(package): dispatch get_links_for_type on Link::TYPE_* values PHP resolves a link kind through `$package->{'get'.ucfirst($linkType)}()`, so the argument is a `Link::$TYPES` value ("requires", "devRequires", ...). The helper matched the composer.json key names ("require", "require-dev", ...) instead, so every caller passing a `Link::TYPE_*` constant got an empty map back: `show ` printed none of its requires/provides/conflicts/ replaces sections, and `--format=json` carried none of those keys. The two callers that were passing composer.json keys now pass the matching `method`, as PHP does. --- crates/shirabe/src/package/package_interface.rs | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) (limited to 'crates/shirabe/src/package/package_interface.rs') diff --git a/crates/shirabe/src/package/package_interface.rs b/crates/shirabe/src/package/package_interface.rs index d138fd83..c3cb1c56 100644 --- a/crates/shirabe/src/package/package_interface.rs +++ b/crates/shirabe/src/package/package_interface.rs @@ -191,17 +191,18 @@ pub trait PackageInterface: std::fmt::Display + std::fmt::Debug { /// @return array An array of package suggestions with descriptions fn get_suggests(&self) -> IndexMap; - /// PHP helper that switches on the link kind (require/require-dev/conflict/etc.). + /// Stands in for PHP's `$package->{'get'.ucfirst($linkType)}()`, so `link_type` is one of the + /// `Link::TYPE_*` values. fn get_links_for_type( &self, link_type: &str, ) -> std::rc::Rc> { match link_type { - "require" => self.get_requires(), - "require-dev" => self.get_dev_requires(), - "conflict" => self.get_conflicts(), - "provide" => self.get_provides(), - "replace" => self.get_replaces(), + crate::package::Link::TYPE_REQUIRE => self.get_requires(), + crate::package::Link::TYPE_DEV_REQUIRE => self.get_dev_requires(), + crate::package::Link::TYPE_CONFLICT => self.get_conflicts(), + crate::package::Link::TYPE_PROVIDE => self.get_provides(), + crate::package::Link::TYPE_REPLACE => self.get_replaces(), _ => std::rc::Rc::new(IndexMap::new()), } } -- cgit v1.3.1-4-g156e