summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Beyer <matthias.beyer@atos.net>2019-04-24 13:13:23 +0200
committerMatthias Beyer <matthias.beyer@atos.net>2019-04-24 13:13:23 +0200
commitea40d481ad8c68baab770af48d36014facb9cfbb (patch)
tree0bf745edb99a6d179a0837445b466ed369cff8e6
parentc83ef519fac21f0943252e5e303dd733edd2b870 (diff)
Change JSON output of compare
This changes the output format of the JSON for the compare command, so that we easily use it in HTML templates.
-rw-r--r--src/frontend/json.rs30
1 files changed, 18 insertions, 12 deletions
diff --git a/src/frontend/json.rs b/src/frontend/json.rs
index b6a34e5..cd7e651 100644
--- a/src/frontend/json.rs
+++ b/src/frontend/json.rs
@@ -41,28 +41,34 @@ impl Frontend for JsonFrontend {
// but using references is too complicated right now
package_name: String,
local_version: String,
- upstream_repo: String,
- upstream_version: String,
+ comparisons: Vec<CompareTarget>,
+ }
+
+ #[derive(Serialize)]
+ struct CompareTarget {
+ version: String,
+ repo: String,
}
let mut output: Vec<PackageComp> = vec![];
for package in packages.iter() {
- let mut list = backend
+
+ let comparisons = backend
.project(package.name().deref())?
.into_iter()
.filter(|p| filter_repos.contains(p.repo()))
- .map(|upstream_package| {
- PackageComp {
- package_name: package.name().clone(),
- local_version: package.version().clone(),
- upstream_repo: upstream_package.repo().deref().clone(),
- upstream_version: upstream_package.version().deref().clone(),
- }
+ .map(|upstream_package| CompareTarget {
+ version: upstream_package.version().deref().clone(),
+ repo: upstream_package.repo().deref().clone(),
})
- .collect::<Vec<_>>();
+ .collect();
- output.append(&mut list);
+ output.push(PackageComp {
+ package_name: package.name().clone(),
+ local_version: package.version().clone(),
+ comparisons,
+ });
}
let output = serde_json::ser::to_string_pretty(&output)?;