diff options
author | Matthias Beyer <matthias.beyer@atos.net> | 2019-04-24 13:13:23 +0200 |
---|---|---|
committer | Matthias Beyer <matthias.beyer@atos.net> | 2019-04-24 13:13:23 +0200 |
commit | ea40d481ad8c68baab770af48d36014facb9cfbb (patch) | |
tree | 0bf745edb99a6d179a0837445b466ed369cff8e6 | |
parent | c83ef519fac21f0943252e5e303dd733edd2b870 (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.rs | 30 |
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)?; |