summaryrefslogtreecommitdiffstats
path: root/src
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 /src
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.
Diffstat (limited to 'src')
-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)?;