From 20d665bb1247500d514f05b160d01f5f8e223a38 Mon Sep 17 00:00:00 2001 From: nsfisis Date: Thu, 4 Jun 2026 22:37:18 +0900 Subject: feat(loader): wire RootPackageLoader::load end-to-end Resolve the remaining todo!()/placeholder sites in RootPackageLoader::load so the root package loads with real data: - Unbox config at use sites and change load()'s parameter from IndexMap> to IndexMap, matching ArrayLoader::load / VersionGuesser::guess_version and dropping the redundant box/unbox round-trip at the factory call site. - Expose replace_version through CompletePackage/RootPackage inherent delegation and a RootPackageHandle method (PHP Package::replaceVersion, inherited), and apply it for the auto-versioned default. - Collect require/require-dev links via getter dispatch and build the pretty-string map feeding extractAliases/StabilityFlags/References. Also reconcile the package repositories type with Config: change CompletePackageInterface::{get,set}_repositories from Vec> to IndexMap (PHP's array), wire setRepositories(config.getRepositories()), and dump repositories verbatim as a keyed array (matching PHP ArrayDumper) instead of forcing a list. Co-Authored-By: Claude Opus 4.8 --- crates/shirabe/src/package/complete_package.rs | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) (limited to 'crates/shirabe/src/package/complete_package.rs') diff --git a/crates/shirabe/src/package/complete_package.rs b/crates/shirabe/src/package/complete_package.rs index f8293a5..033db9b 100644 --- a/crates/shirabe/src/package/complete_package.rs +++ b/crates/shirabe/src/package/complete_package.rs @@ -11,7 +11,7 @@ use shirabe_php_shim::PhpMixed; #[derive(Debug, Clone)] pub struct CompletePackage { pub(crate) inner: Package, - pub(crate) repositories: Vec>, + pub(crate) repositories: IndexMap, pub(crate) license: Vec, pub(crate) keywords: Vec, pub(crate) authors: Vec>, @@ -29,7 +29,7 @@ impl CompletePackage { pub fn new(name: String, version: String, pretty_version: String) -> Self { Self { inner: crate::package::Package::new(name, version, pretty_version), - repositories: Vec::new(), + repositories: IndexMap::new(), license: Vec::new(), keywords: Vec::new(), authors: Vec::new(), @@ -43,6 +43,10 @@ impl CompletePackage { archive_excludes: Vec::new(), } } + + pub fn replace_version(&mut self, version: String, pretty_version: String) { + self.inner.replace_version(version, pretty_version); + } } impl CompletePackageInterface for CompletePackage { @@ -54,11 +58,11 @@ impl CompletePackageInterface for CompletePackage { self.scripts.clone() } - fn set_repositories(&mut self, repositories: Vec>) { + fn set_repositories(&mut self, repositories: IndexMap) { self.repositories = repositories; } - fn get_repositories(&self) -> Vec> { + fn get_repositories(&self) -> IndexMap { self.repositories.clone() } -- cgit v1.3.1