aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe/src/package/complete_package.rs
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-06-04 22:37:18 +0900
committernsfisis <nsfisis@gmail.com>2026-06-04 22:37:53 +0900
commit20d665bb1247500d514f05b160d01f5f8e223a38 (patch)
tree0d49d9f928021380b4c932f4f14272415afa9272 /crates/shirabe/src/package/complete_package.rs
parentf429396f1cada5b7096d12c3cfaeea113018406c (diff)
downloadphp-shirabe-20d665bb1247500d514f05b160d01f5f8e223a38.tar.gz
php-shirabe-20d665bb1247500d514f05b160d01f5f8e223a38.tar.zst
php-shirabe-20d665bb1247500d514f05b160d01f5f8e223a38.zip
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<String, Box<PhpMixed>> to IndexMap<String, PhpMixed>, 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<IndexMap<String, PhpMixed>> to IndexMap<String, PhpMixed> (PHP's array<int|string, mixed>), 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 <noreply@anthropic.com>
Diffstat (limited to 'crates/shirabe/src/package/complete_package.rs')
-rw-r--r--crates/shirabe/src/package/complete_package.rs12
1 files changed, 8 insertions, 4 deletions
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<IndexMap<String, PhpMixed>>,
+ pub(crate) repositories: IndexMap<String, PhpMixed>,
pub(crate) license: Vec<String>,
pub(crate) keywords: Vec<String>,
pub(crate) authors: Vec<IndexMap<String, String>>,
@@ -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<IndexMap<String, PhpMixed>>) {
+ fn set_repositories(&mut self, repositories: IndexMap<String, PhpMixed>) {
self.repositories = repositories;
}
- fn get_repositories(&self) -> Vec<IndexMap<String, PhpMixed>> {
+ fn get_repositories(&self) -> IndexMap<String, PhpMixed> {
self.repositories.clone()
}