aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe/src/package/dumper/array_dumper.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/shirabe/src/package/dumper/array_dumper.rs')
-rw-r--r--crates/shirabe/src/package/dumper/array_dumper.rs352
1 files changed, 281 insertions, 71 deletions
diff --git a/crates/shirabe/src/package/dumper/array_dumper.rs b/crates/shirabe/src/package/dumper/array_dumper.rs
index bee9aa7..02f1092 100644
--- a/crates/shirabe/src/package/dumper/array_dumper.rs
+++ b/crates/shirabe/src/package/dumper/array_dumper.rs
@@ -20,28 +20,63 @@ impl ArrayDumper {
pub fn dump(&self, package: &dyn PackageInterface) -> IndexMap<String, PhpMixed> {
let mut data: IndexMap<String, PhpMixed> = IndexMap::new();
- data.insert("name".to_string(), PhpMixed::String(package.get_pretty_name().to_string()));
- data.insert("version".to_string(), PhpMixed::String(package.get_pretty_version().to_string()));
- data.insert("version_normalized".to_string(), PhpMixed::String(package.get_version().to_string()));
+ data.insert(
+ "name".to_string(),
+ PhpMixed::String(package.get_pretty_name().to_string()),
+ );
+ data.insert(
+ "version".to_string(),
+ PhpMixed::String(package.get_pretty_version().to_string()),
+ );
+ data.insert(
+ "version_normalized".to_string(),
+ PhpMixed::String(package.get_version().to_string()),
+ );
if let Some(target_dir) = package.get_target_dir() {
- data.insert("target-dir".to_string(), PhpMixed::String(target_dir.to_string()));
+ data.insert(
+ "target-dir".to_string(),
+ PhpMixed::String(target_dir.to_string()),
+ );
}
if let Some(source_type) = package.get_source_type() {
let mut source: IndexMap<String, Box<PhpMixed>> = IndexMap::new();
- source.insert("type".to_string(), Box::new(PhpMixed::String(source_type.to_string())));
- source.insert("url".to_string(), Box::new(PhpMixed::String(package.get_source_url().unwrap_or("").to_string())));
+ source.insert(
+ "type".to_string(),
+ Box::new(PhpMixed::String(source_type.to_string())),
+ );
+ source.insert(
+ "url".to_string(),
+ Box::new(PhpMixed::String(
+ package.get_source_url().unwrap_or("").to_string(),
+ )),
+ );
if let Some(reference) = package.get_source_reference() {
- source.insert("reference".to_string(), Box::new(PhpMixed::String(reference.to_string())));
+ source.insert(
+ "reference".to_string(),
+ Box::new(PhpMixed::String(reference.to_string())),
+ );
}
if let Some(mirrors) = package.get_source_mirrors() {
if !mirrors.is_empty() {
- source.insert("mirrors".to_string(), Box::new(PhpMixed::Array(
- mirrors.into_iter().enumerate().map(|(i, m)| (i.to_string(), Box::new(PhpMixed::Array(
- m.into_iter().map(|(k, v)| (k, Box::new(v))).collect()
- )))).collect()
- )));
+ source.insert(
+ "mirrors".to_string(),
+ Box::new(PhpMixed::Array(
+ mirrors
+ .into_iter()
+ .enumerate()
+ .map(|(i, m)| {
+ (
+ i.to_string(),
+ Box::new(PhpMixed::Array(
+ m.into_iter().map(|(k, v)| (k, Box::new(v))).collect(),
+ )),
+ )
+ })
+ .collect(),
+ )),
+ );
}
}
data.insert("source".to_string(), PhpMixed::Array(source));
@@ -49,21 +84,47 @@ impl ArrayDumper {
if let Some(dist_type) = package.get_dist_type() {
let mut dist: IndexMap<String, Box<PhpMixed>> = IndexMap::new();
- dist.insert("type".to_string(), Box::new(PhpMixed::String(dist_type.to_string())));
- dist.insert("url".to_string(), Box::new(PhpMixed::String(package.get_dist_url().unwrap_or("").to_string())));
+ dist.insert(
+ "type".to_string(),
+ Box::new(PhpMixed::String(dist_type.to_string())),
+ );
+ dist.insert(
+ "url".to_string(),
+ Box::new(PhpMixed::String(
+ package.get_dist_url().unwrap_or("").to_string(),
+ )),
+ );
if let Some(reference) = package.get_dist_reference() {
- dist.insert("reference".to_string(), Box::new(PhpMixed::String(reference.to_string())));
+ dist.insert(
+ "reference".to_string(),
+ Box::new(PhpMixed::String(reference.to_string())),
+ );
}
if let Some(shasum) = package.get_dist_sha1_checksum() {
- dist.insert("shasum".to_string(), Box::new(PhpMixed::String(shasum.to_string())));
+ dist.insert(
+ "shasum".to_string(),
+ Box::new(PhpMixed::String(shasum.to_string())),
+ );
}
if let Some(mirrors) = package.get_dist_mirrors() {
if !mirrors.is_empty() {
- dist.insert("mirrors".to_string(), Box::new(PhpMixed::Array(
- mirrors.into_iter().enumerate().map(|(i, m)| (i.to_string(), Box::new(PhpMixed::Array(
- m.into_iter().map(|(k, v)| (k, Box::new(v))).collect()
- )))).collect()
- )));
+ dist.insert(
+ "mirrors".to_string(),
+ Box::new(PhpMixed::Array(
+ mirrors
+ .into_iter()
+ .enumerate()
+ .map(|(i, m)| {
+ (
+ i.to_string(),
+ Box::new(PhpMixed::Array(
+ m.into_iter().map(|(k, v)| (k, Box::new(v))).collect(),
+ )),
+ )
+ })
+ .collect(),
+ )),
+ );
}
}
data.insert("dist".to_string(), PhpMixed::Array(dist));
@@ -77,7 +138,10 @@ impl ArrayDumper {
}
let mut link_map: IndexMap<String, Box<PhpMixed>> = IndexMap::new();
for link in &links {
- link_map.insert(link.get_target().to_string(), Box::new(PhpMixed::String(link.get_pretty_constraint().to_string())));
+ link_map.insert(
+ link.get_target().to_string(),
+ Box::new(PhpMixed::String(link.get_pretty_constraint().to_string())),
+ );
}
link_map.sort_keys();
data.insert(type_name, PhpMixed::Array(link_map));
@@ -87,13 +151,22 @@ impl ArrayDumper {
if !suggests.is_empty() {
let mut sorted_suggests = suggests.clone();
sorted_suggests.sort_keys();
- data.insert("suggest".to_string(), PhpMixed::Array(
- sorted_suggests.into_iter().map(|(k, v)| (k, Box::new(PhpMixed::String(v)))).collect()
- ));
+ data.insert(
+ "suggest".to_string(),
+ PhpMixed::Array(
+ sorted_suggests
+ .into_iter()
+ .map(|(k, v)| (k, Box::new(PhpMixed::String(v))))
+ .collect(),
+ ),
+ );
}
if let Some(release_date) = package.get_release_date() {
- data.insert("time".to_string(), PhpMixed::String(release_date.to_rfc3339()));
+ data.insert(
+ "time".to_string(),
+ PhpMixed::String(release_date.to_rfc3339()),
+ );
}
if package.is_default_branch() {
@@ -103,7 +176,15 @@ impl ArrayDumper {
// dumpValues for base package keys (corresponds to dynamic PHP dispatch)
let binaries = package.get_binaries();
if !binaries.is_empty() {
- data.insert("bin".to_string(), PhpMixed::List(binaries.into_iter().map(|b| Box::new(PhpMixed::String(b))).collect()));
+ data.insert(
+ "bin".to_string(),
+ PhpMixed::List(
+ binaries
+ .into_iter()
+ .map(|b| Box::new(PhpMixed::String(b)))
+ .collect(),
+ ),
+ );
}
if let Some(pkg_type) = package.get_type() {
if !pkg_type.is_empty() {
@@ -112,103 +193,223 @@ impl ArrayDumper {
}
let extra = package.get_extra();
if !extra.is_empty() {
- data.insert("extra".to_string(), PhpMixed::Array(extra.into_iter().map(|(k, v)| (k, Box::new(v))).collect()));
+ data.insert(
+ "extra".to_string(),
+ PhpMixed::Array(extra.into_iter().map(|(k, v)| (k, Box::new(v))).collect()),
+ );
}
if let Some(installation_source) = package.get_installation_source() {
- data.insert("installation-source".to_string(), PhpMixed::String(installation_source.to_string()));
+ data.insert(
+ "installation-source".to_string(),
+ PhpMixed::String(installation_source.to_string()),
+ );
}
let autoload = package.get_autoload();
if !autoload.is_empty() {
- data.insert("autoload".to_string(), PhpMixed::Array(autoload.into_iter().map(|(k, v)| (k, Box::new(v))).collect()));
+ data.insert(
+ "autoload".to_string(),
+ PhpMixed::Array(
+ autoload
+ .into_iter()
+ .map(|(k, v)| (k, Box::new(v)))
+ .collect(),
+ ),
+ );
}
let dev_autoload = package.get_dev_autoload();
if !dev_autoload.is_empty() {
- data.insert("autoload-dev".to_string(), PhpMixed::Array(dev_autoload.into_iter().map(|(k, v)| (k, Box::new(v))).collect()));
+ data.insert(
+ "autoload-dev".to_string(),
+ PhpMixed::Array(
+ dev_autoload
+ .into_iter()
+ .map(|(k, v)| (k, Box::new(v)))
+ .collect(),
+ ),
+ );
}
if let Some(notification_url) = package.get_notification_url() {
- data.insert("notification-url".to_string(), PhpMixed::String(notification_url.to_string()));
+ data.insert(
+ "notification-url".to_string(),
+ PhpMixed::String(notification_url.to_string()),
+ );
}
let include_paths = package.get_include_paths();
if !include_paths.is_empty() {
- data.insert("include-path".to_string(), PhpMixed::List(include_paths.into_iter().map(|p| Box::new(PhpMixed::String(p))).collect()));
+ data.insert(
+ "include-path".to_string(),
+ PhpMixed::List(
+ include_paths
+ .into_iter()
+ .map(|p| Box::new(PhpMixed::String(p)))
+ .collect(),
+ ),
+ );
}
let php_ext = package.get_php_ext();
if !php_ext.is_empty() {
- data.insert("php-ext".to_string(), PhpMixed::Array(php_ext.into_iter().map(|(k, v)| (k, Box::new(v))).collect()));
+ data.insert(
+ "php-ext".to_string(),
+ PhpMixed::Array(php_ext.into_iter().map(|(k, v)| (k, Box::new(v))).collect()),
+ );
}
- if let Some(complete_pkg) = (package.as_any() as &dyn Any).downcast_ref::<CompletePackage>() {
+ if let Some(complete_pkg) = (package.as_any() as &dyn Any).downcast_ref::<CompletePackage>()
+ {
if let Some(archive_name) = complete_pkg.get_archive_name() {
- let entry = data.entry("archive".to_string()).or_insert_with(|| PhpMixed::Array(IndexMap::new()));
+ let entry = data
+ .entry("archive".to_string())
+ .or_insert_with(|| PhpMixed::Array(IndexMap::new()));
if let PhpMixed::Array(ref mut archive) = entry {
- archive.insert("name".to_string(), Box::new(PhpMixed::String(archive_name.to_string())));
+ archive.insert(
+ "name".to_string(),
+ Box::new(PhpMixed::String(archive_name.to_string())),
+ );
}
}
let archive_excludes = complete_pkg.get_archive_excludes();
if !archive_excludes.is_empty() {
- let entry = data.entry("archive".to_string()).or_insert_with(|| PhpMixed::Array(IndexMap::new()));
+ let entry = data
+ .entry("archive".to_string())
+ .or_insert_with(|| PhpMixed::Array(IndexMap::new()));
if let PhpMixed::Array(ref mut archive) = entry {
- archive.insert("exclude".to_string(), Box::new(PhpMixed::List(
- archive_excludes.into_iter().map(|e| Box::new(PhpMixed::String(e))).collect()
- )));
+ archive.insert(
+ "exclude".to_string(),
+ Box::new(PhpMixed::List(
+ archive_excludes
+ .into_iter()
+ .map(|e| Box::new(PhpMixed::String(e)))
+ .collect(),
+ )),
+ );
}
}
// dumpValues for complete package keys
let scripts = complete_pkg.get_scripts();
if !scripts.is_empty() {
- data.insert("scripts".to_string(), PhpMixed::Array(
- scripts.into_iter().map(|(k, v)| (k, Box::new(PhpMixed::List(v.into_iter().map(|s| Box::new(PhpMixed::String(s))).collect())))).collect()
- ));
+ data.insert(
+ "scripts".to_string(),
+ PhpMixed::Array(
+ scripts
+ .into_iter()
+ .map(|(k, v)| {
+ (
+ k,
+ Box::new(PhpMixed::List(
+ v.into_iter()
+ .map(|s| Box::new(PhpMixed::String(s)))
+ .collect(),
+ )),
+ )
+ })
+ .collect(),
+ ),
+ );
}
let license = complete_pkg.get_license();
if !license.is_empty() {
- data.insert("license".to_string(), PhpMixed::List(license.into_iter().map(|l| Box::new(PhpMixed::String(l))).collect()));
+ data.insert(
+ "license".to_string(),
+ PhpMixed::List(
+ license
+ .into_iter()
+ .map(|l| Box::new(PhpMixed::String(l)))
+ .collect(),
+ ),
+ );
}
let authors = complete_pkg.get_authors();
if !authors.is_empty() {
- data.insert("authors".to_string(), PhpMixed::List(
- authors.into_iter().map(|a| Box::new(PhpMixed::Array(
- a.into_iter().map(|(k, v)| (k, Box::new(PhpMixed::String(v)))).collect()
- ))).collect()
- ));
+ data.insert(
+ "authors".to_string(),
+ PhpMixed::List(
+ authors
+ .into_iter()
+ .map(|a| {
+ Box::new(PhpMixed::Array(
+ a.into_iter()
+ .map(|(k, v)| (k, Box::new(PhpMixed::String(v))))
+ .collect(),
+ ))
+ })
+ .collect(),
+ ),
+ );
}
if let Some(description) = complete_pkg.get_description() {
- data.insert("description".to_string(), PhpMixed::String(description.to_string()));
+ data.insert(
+ "description".to_string(),
+ PhpMixed::String(description.to_string()),
+ );
}
if let Some(homepage) = complete_pkg.get_homepage() {
- data.insert("homepage".to_string(), PhpMixed::String(homepage.to_string()));
+ data.insert(
+ "homepage".to_string(),
+ PhpMixed::String(homepage.to_string()),
+ );
}
let mut keywords = complete_pkg.get_keywords();
if !keywords.is_empty() {
keywords.sort();
- data.insert("keywords".to_string(), PhpMixed::List(keywords.into_iter().map(|k| Box::new(PhpMixed::String(k))).collect()));
+ data.insert(
+ "keywords".to_string(),
+ PhpMixed::List(
+ keywords
+ .into_iter()
+ .map(|k| Box::new(PhpMixed::String(k)))
+ .collect(),
+ ),
+ );
}
let repositories = complete_pkg.get_repositories();
if !repositories.is_empty() {
- data.insert("repositories".to_string(), PhpMixed::List(
- repositories.into_iter().map(|r| Box::new(PhpMixed::Array(
- r.into_iter().map(|(k, v)| (k, Box::new(v))).collect()
- ))).collect()
- ));
+ data.insert(
+ "repositories".to_string(),
+ PhpMixed::List(
+ repositories
+ .into_iter()
+ .map(|r| {
+ Box::new(PhpMixed::Array(
+ r.into_iter().map(|(k, v)| (k, Box::new(v))).collect(),
+ ))
+ })
+ .collect(),
+ ),
+ );
}
let support = complete_pkg.get_support();
if !support.is_empty() {
- data.insert("support".to_string(), PhpMixed::Array(
- support.into_iter().map(|(k, v)| (k, Box::new(PhpMixed::String(v)))).collect()
- ));
+ data.insert(
+ "support".to_string(),
+ PhpMixed::Array(
+ support
+ .into_iter()
+ .map(|(k, v)| (k, Box::new(PhpMixed::String(v))))
+ .collect(),
+ ),
+ );
}
let funding = complete_pkg.get_funding();
if !funding.is_empty() {
- data.insert("funding".to_string(), PhpMixed::List(
- funding.into_iter().map(|f| Box::new(PhpMixed::Array(
- f.into_iter().map(|(k, v)| (k, Box::new(v))).collect()
- ))).collect()
- ));
+ data.insert(
+ "funding".to_string(),
+ PhpMixed::List(
+ funding
+ .into_iter()
+ .map(|f| {
+ Box::new(PhpMixed::Array(
+ f.into_iter().map(|(k, v)| (k, Box::new(v))).collect(),
+ ))
+ })
+ .collect(),
+ ),
+ );
}
if complete_pkg.is_abandoned() {
- let abandoned_value = complete_pkg.get_replacement_package()
+ let abandoned_value = complete_pkg
+ .get_replacement_package()
.map(|r| PhpMixed::String(r.to_string()))
.unwrap_or(PhpMixed::Bool(true));
data.insert("abandoned".to_string(), abandoned_value);
@@ -218,15 +419,24 @@ impl ArrayDumper {
if let Some(root_pkg) = (package.as_any() as &dyn Any).downcast_ref::<RootPackage>() {
let minimum_stability = root_pkg.get_minimum_stability();
if !minimum_stability.is_empty() {
- data.insert("minimum-stability".to_string(), PhpMixed::String(minimum_stability.to_string()));
+ data.insert(
+ "minimum-stability".to_string(),
+ PhpMixed::String(minimum_stability.to_string()),
+ );
}
}
let transport_options = package.get_transport_options();
if !transport_options.is_empty() {
- data.insert("transport-options".to_string(), PhpMixed::Array(
- transport_options.into_iter().map(|(k, v)| (k, Box::new(v))).collect()
- ));
+ data.insert(
+ "transport-options".to_string(),
+ PhpMixed::Array(
+ transport_options
+ .into_iter()
+ .map(|(k, v)| (k, Box::new(v)))
+ .collect(),
+ ),
+ );
}
data