aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/mozart/src/factory.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/src/factory.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/src/factory.rs')
-rw-r--r--crates/mozart/src/factory.rs11
1 files changed, 6 insertions, 5 deletions
diff --git a/crates/mozart/src/factory.rs b/crates/mozart/src/factory.rs
index ca46671..29faa42 100644
--- a/crates/mozart/src/factory.rs
+++ b/crates/mozart/src/factory.rs
@@ -16,7 +16,7 @@ use mozart_core::composer::{
};
use mozart_core::config::resolve_references;
use mozart_core::factory::create_config;
-use mozart_core::package::read_from_file;
+use mozart_core::package::{RootPackageData, read_from_file};
use mozart_core::repository::download_manager::DownloadManager;
/// Rust port of `Factory::createComposer()`.
@@ -62,7 +62,7 @@ pub fn create_composer(
}
resolve_references(&mut config);
- let package = read_from_file(composer_json)?;
+ let package = RootPackageData::from_raw(read_from_file(composer_json)?);
// Mirrors `Factory::createComposer`'s `vendorDir` handling. The
// value out of `Config::get('vendor-dir')` already had `{$...}`
@@ -321,14 +321,15 @@ mod tests {
r#"{"name": "acme/app", "require": {"vendor/pkg": "^1.0"}}"#,
);
+ use mozart_core::package::Package;
let composer = Composer::require(dir.path()).unwrap();
- assert_eq!(composer.package().name, "acme/app");
+ assert_eq!(composer.package().name(), "acme/app");
assert_eq!(
composer
.package()
- .require
+ .requires()
.get("vendor/pkg")
- .map(String::as_str),
+ .map(|l| l.constraint.as_str()),
Some("^1.0"),
);
}