aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/mozart-core/src/repository_utils.rs
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-05-10 01:18:44 +0900
committernsfisis <nsfisis@gmail.com>2026-05-10 01:18:44 +0900
commit4caf72463de598ea9b6454f3b7b7332dd0071318 (patch)
tree62f99c8a48e5b21d75ab70bfd374eb67215542c9 /crates/mozart-core/src/repository_utils.rs
parent8cc1ba8a02c0318b65658f1634de378c780392b9 (diff)
downloadphp-mozart-4caf72463de598ea9b6454f3b7b7332dd0071318.tar.gz
php-mozart-4caf72463de598ea9b6454f3b7b7332dd0071318.tar.zst
php-mozart-4caf72463de598ea9b6454f3b7b7332dd0071318.zip
refactor(package): port RootPackageLoader into RootPackageData::from_raw
Mirrors Composer\Package\Loader\RootPackageLoader::load(): converts the parsed RawPackageData into fully typed RootPackageData with Link objects, defaulted fields, and trait-based accessors. Composer::package() now returns RootPackageData instead of RawPackageData, eliminating the pre-normalised JSON workaround noted in the previous comment.
Diffstat (limited to 'crates/mozart-core/src/repository_utils.rs')
-rw-r--r--crates/mozart-core/src/repository_utils.rs8
1 files changed, 4 insertions, 4 deletions
diff --git a/crates/mozart-core/src/repository_utils.rs b/crates/mozart-core/src/repository_utils.rs
index ecd5dd7..b16a0d6 100644
--- a/crates/mozart-core/src/repository_utils.rs
+++ b/crates/mozart-core/src/repository_utils.rs
@@ -36,10 +36,10 @@ pub trait Required {
///
/// The returned vector preserves the order in which packages were
/// discovered, matching PHP's `$bucket[] = $candidate;` push pattern.
-pub fn filter_required_packages<P>(
+pub fn filter_required_packages<P, V>(
packages: &[P],
- requirer_requires: &std::collections::BTreeMap<String, String>,
- requirer_dev_requires: Option<&std::collections::BTreeMap<String, String>>,
+ requirer_requires: &std::collections::BTreeMap<String, V>,
+ requirer_dev_requires: Option<&std::collections::BTreeMap<String, V>>,
) -> Vec<usize>
where
P: Required,
@@ -167,7 +167,7 @@ mod tests {
#[test]
fn empty_requires_yields_nothing() {
let packages = vec![pkg("a/a", &[]), pkg("b/b", &[])];
- let root = BTreeMap::new();
+ let root: BTreeMap<String, String> = BTreeMap::new();
let kept = filter_required_packages(&packages, &root, None);
assert!(kept.is_empty());
}