aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe/src/repository/package_repository.rs
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-07-05 18:44:06 +0900
committernsfisis <nsfisis@gmail.com>2026-07-05 18:44:06 +0900
commit90ebddc8fd17bac1064fb5a0da88a9ad535f5a3c (patch)
tree31e8831df80401b45ded74dfa5e3581fedf6a942 /crates/shirabe/src/repository/package_repository.rs
parent8aae17870a5ec2fdd9f0d4d61d33c792ff7b62b0 (diff)
downloadphp-shirabe-90ebddc8fd17bac1064fb5a0da88a9ad535f5a3c.tar.gz
php-shirabe-90ebddc8fd17bac1064fb5a0da88a9ad535f5a3c.tar.zst
php-shirabe-90ebddc8fd17bac1064fb5a0da88a9ad535f5a3c.zip
feat(validating-array-loader): implement LoaderInterface
Convert errors/warnings/config to RefCell so load() can satisfy the trait's &self signature, matching upstream's `instanceof ValidatingArrayLoader` check in VcsRepository. This makes the InvalidPackageException downcast path in VcsRepository reachable for the first time instead of being permanently dead code.
Diffstat (limited to 'crates/shirabe/src/repository/package_repository.rs')
-rw-r--r--crates/shirabe/src/repository/package_repository.rs9
1 files changed, 6 insertions, 3 deletions
diff --git a/crates/shirabe/src/repository/package_repository.rs b/crates/shirabe/src/repository/package_repository.rs
index 1a5ccc8..0973332 100644
--- a/crates/shirabe/src/repository/package_repository.rs
+++ b/crates/shirabe/src/repository/package_repository.rs
@@ -4,6 +4,7 @@ use crate::advisory::{AnySecurityAdvisory, PartialSecurityAdvisory};
use crate::package::BasePackageHandle;
use crate::package::PackageInterfaceHandle;
use crate::package::loader::ArrayLoader;
+use crate::package::loader::LoaderInterface;
use crate::package::loader::ValidatingArrayLoader;
use crate::package::version::VersionParser;
use crate::repository::ArrayRepository;
@@ -53,15 +54,17 @@ impl PackageRepository {
pub fn initialize(&self) -> anyhow::Result<Result<(), InvalidRepositoryException>> {
self.inner.initialize();
- let mut loader =
+ let loader =
ValidatingArrayLoader::new(Box::new(ArrayLoader::new(None, true)), true, None, 0);
for package in &self.config {
let config_map: IndexMap<String, PhpMixed> = match package {
PhpMixed::Array(m) => m.iter().map(|(k, v)| (k.clone(), v.clone())).collect(),
_ => IndexMap::new(),
};
- let package_loaded = match loader.load(config_map, "Composer\\Package\\CompletePackage")
- {
+ let package_loaded = match loader.load(
+ config_map,
+ Some("Composer\\Package\\CompletePackage".to_string()),
+ ) {
Ok(p) => p,
Err(e) => {
let msg = format!(