diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-07-05 18:44:06 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-07-05 18:44:06 +0900 |
| commit | 90ebddc8fd17bac1064fb5a0da88a9ad535f5a3c (patch) | |
| tree | 31e8831df80401b45ded74dfa5e3581fedf6a942 /crates/shirabe/src/repository/package_repository.rs | |
| parent | 8aae17870a5ec2fdd9f0d4d61d33c792ff7b62b0 (diff) | |
| download | php-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.rs | 9 |
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!( |
