From 4caf72463de598ea9b6454f3b7b7332dd0071318 Mon Sep 17 00:00:00 2001 From: nsfisis Date: Sun, 10 May 2026 01:18:44 +0900 Subject: 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. --- crates/mozart/src/factory.rs | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) (limited to 'crates/mozart/src/factory.rs') 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"), ); } -- cgit v1.3.1