diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-05-10 01:18:44 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-05-10 01:18:44 +0900 |
| commit | 4caf72463de598ea9b6454f3b7b7332dd0071318 (patch) | |
| tree | 62f99c8a48e5b21d75ab70bfd374eb67215542c9 /crates/mozart/src/factory.rs | |
| parent | 8cc1ba8a02c0318b65658f1634de378c780392b9 (diff) | |
| download | php-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.rs | 11 |
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"), ); } |
