aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe/src/package/loader
diff options
context:
space:
mode:
Diffstat (limited to 'crates/shirabe/src/package/loader')
-rw-r--r--crates/shirabe/src/package/loader/array_loader.rs2
-rw-r--r--crates/shirabe/src/package/loader/invalid_package_exception.rs11
-rw-r--r--crates/shirabe/src/package/loader/json_loader.rs11
-rw-r--r--crates/shirabe/src/package/loader/validating_array_loader.rs5
4 files changed, 20 insertions, 9 deletions
diff --git a/crates/shirabe/src/package/loader/array_loader.rs b/crates/shirabe/src/package/loader/array_loader.rs
index 28e13af..275d718 100644
--- a/crates/shirabe/src/package/loader/array_loader.rs
+++ b/crates/shirabe/src/package/loader/array_loader.rs
@@ -588,7 +588,7 @@ impl ArrayLoader {
let alias_normalized = self.get_branch_alias(config)?;
if let Some(alias_normalized) = alias_normalized {
if !alias_normalized.is_empty() {
- let pretty_alias = Preg::replace(r"{(\.9{7})+}", ".x", &alias_normalized);
+ let pretty_alias = Preg::replace(r"{(\.9{7})+}", ".x", &alias_normalized)?;
// TODO(phase-b): `$package instanceof RootPackage` downcast from CompletePackage
let package_as_root: Option<RootPackage> = None;
diff --git a/crates/shirabe/src/package/loader/invalid_package_exception.rs b/crates/shirabe/src/package/loader/invalid_package_exception.rs
index 96725ba..764b31f 100644
--- a/crates/shirabe/src/package/loader/invalid_package_exception.rs
+++ b/crates/shirabe/src/package/loader/invalid_package_exception.rs
@@ -1,5 +1,6 @@
//! ref: composer/src/Composer/Package/Loader/InvalidPackageException.php
+use indexmap::IndexMap;
use shirabe_php_shim::{Exception, PhpMixed};
#[derive(Debug)]
@@ -7,11 +8,15 @@ pub struct InvalidPackageException {
inner: Exception,
errors: Vec<String>,
warnings: Vec<String>,
- data: Vec<PhpMixed>,
+ data: IndexMap<String, PhpMixed>,
}
impl InvalidPackageException {
- pub fn new(errors: Vec<String>, warnings: Vec<String>, data: Vec<PhpMixed>) -> Self {
+ pub fn new(
+ errors: Vec<String>,
+ warnings: Vec<String>,
+ data: IndexMap<String, PhpMixed>,
+ ) -> Self {
let message = format!(
"Invalid package information: \n{}",
errors
@@ -29,7 +34,7 @@ impl InvalidPackageException {
}
}
- pub fn get_data(&self) -> &[PhpMixed] {
+ pub fn get_data(&self) -> &IndexMap<String, PhpMixed> {
&self.data
}
diff --git a/crates/shirabe/src/package/loader/json_loader.rs b/crates/shirabe/src/package/loader/json_loader.rs
index 978bc28..cb3cbeb 100644
--- a/crates/shirabe/src/package/loader/json_loader.rs
+++ b/crates/shirabe/src/package/loader/json_loader.rs
@@ -22,13 +22,16 @@ impl JsonLoader {
pub fn load(&self, json: JsonLoaderInput) -> Result<Box<dyn BasePackage>> {
let config = match json {
- JsonLoaderInput::File(json_file) => json_file.read()?,
+ JsonLoaderInput::File(mut json_file) => json_file.read()?,
JsonLoaderInput::String(ref s) if Path::new(s).exists() => {
- JsonFile::parse_json(&std::fs::read_to_string(s)?, Some(s))?
+ let contents = std::fs::read_to_string(s)?;
+ JsonFile::parse_json(Some(&contents), Some(s))?
}
- JsonLoaderInput::String(ref s) => JsonFile::parse_json(s, None)?,
+ JsonLoaderInput::String(ref s) => JsonFile::parse_json(Some(s), None)?,
};
- self.loader.load(config, None)
+ // TODO(phase-b): JsonFile::parse_json returns PhpMixed; loader::load expects IndexMap
+ let _ = config;
+ self.loader.load(indexmap::IndexMap::new(), None)
}
}
diff --git a/crates/shirabe/src/package/loader/validating_array_loader.rs b/crates/shirabe/src/package/loader/validating_array_loader.rs
index 3ba9212..5009a0d 100644
--- a/crates/shirabe/src/package/loader/validating_array_loader.rs
+++ b/crates/shirabe/src/package/loader/validating_array_loader.rs
@@ -1288,7 +1288,10 @@ impl ValidatingArrayLoader {
return Err(anyhow::anyhow!(InvalidPackageException::new(
self.errors.clone(),
self.warnings.clone(),
- config.values().map(|v| (**v).clone()).collect(),
+ config
+ .iter()
+ .map(|(k, v)| (k.clone(), (**v).clone()))
+ .collect(),
)));
}