aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe/src/repository
diff options
context:
space:
mode:
Diffstat (limited to 'crates/shirabe/src/repository')
-rw-r--r--crates/shirabe/src/repository/package_repository.rs9
-rw-r--r--crates/shirabe/src/repository/vcs_repository.rs9
2 files changed, 8 insertions, 10 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!(
diff --git a/crates/shirabe/src/repository/vcs_repository.rs b/crates/shirabe/src/repository/vcs_repository.rs
index 6a31c78..29702db 100644
--- a/crates/shirabe/src/repository/vcs_repository.rs
+++ b/crates/shirabe/src/repository/vcs_repository.rs
@@ -767,11 +767,6 @@ impl VcsRepository {
.unwrap()
.load(package_data.clone(), None)?;
// PHP: `$this->loader instanceof ValidatingArrayLoader`.
- // TODO(phase-c): ValidatingArrayLoader does not implement LoaderInterface yet (its
- // `load` needs `&mut self`, requiring a LoaderInterface redesign), so it can never be
- // stored in `self.loader` and this downcast is always None. Production never calls
- // setLoader so the default ArrayLoader matches upstream, but the InvalidPackageException
- // path stays dead until the trait is reworked.
let loader_ref = self.loader.borrow();
let loader_as_validating = loader_ref
.as_ref()
@@ -780,8 +775,8 @@ impl VcsRepository {
&& !validating.get_warnings().is_empty()
{
return Err(InvalidPackageException::new(
- validating.get_errors().to_vec(),
- validating.get_warnings().to_vec(),
+ validating.get_errors(),
+ validating.get_warnings(),
package_data,
)
.into());