aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe/src/package/package_interface.rs
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-08-22 19:47:23 +0900
committernsfisis <nsfisis@gmail.com>2026-08-22 19:47:23 +0900
commit3ef7095aa0c8cdb6c1f15d46304bbe8c2e6393d6 (patch)
tree4d323bda622be7771549a9c8e91665906dc3772d /crates/shirabe/src/package/package_interface.rs
parent6195e33dfc87cf4b231006b3e5e686a9d8fe2dc1 (diff)
downloadphp-shirabe-3ef7095aa0c8cdb6c1f15d46304bbe8c2e6393d6.tar.gz
php-shirabe-3ef7095aa0c8cdb6c1f15d46304bbe8c2e6393d6.tar.zst
php-shirabe-3ef7095aa0c8cdb6c1f15d46304bbe8c2e6393d6.zip
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 <package>` 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.
Diffstat (limited to 'crates/shirabe/src/package/package_interface.rs')
-rw-r--r--crates/shirabe/src/package/package_interface.rs13
1 files changed, 7 insertions, 6 deletions
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<String, String>;
- /// 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<IndexMap<String, crate::package::Link>> {
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()),
}
}