From ea40d481ad8c68baab770af48d36014facb9cfbb Mon Sep 17 00:00:00 2001 From: Matthias Beyer Date: Wed, 24 Apr 2019 13:13:23 +0200 Subject: 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. --- src/frontend/json.rs | 30 ++++++++++++++++++------------ 1 file 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, + } + + #[derive(Serialize)] + struct CompareTarget { + version: String, + repo: String, } let mut output: Vec = 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::>(); + .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)?; -- cgit v1.2.3 From 41c5a9c5a601733809f15b98a3ba79db8f896518 Mon Sep 17 00:00:00 2001 From: Matthias Beyer Date: Wed, 24 Apr 2019 13:19:46 +0200 Subject: Add html templates for generating nice report websites --- etc/README.md | 13 +++++++++++++ etc/compare.html | 45 +++++++++++++++++++++++++++++++++++++++++++++ etc/problems.html | 28 ++++++++++++++++++++++++++++ etc/project.html | 36 ++++++++++++++++++++++++++++++++++++ 4 files changed, 122 insertions(+) create mode 100644 etc/README.md create mode 100644 etc/compare.html create mode 100644 etc/problems.html create mode 100644 etc/project.html diff --git a/etc/README.md b/etc/README.md new file mode 100644 index 0000000..c93152b --- /dev/null +++ b/etc/README.md @@ -0,0 +1,13 @@ +# HTML templates + +This directory contains HTML templates which can be used with the "json" output +format and a tool that can fill templates with data. +For example, this can be used with [hdlbr](https://github.com/quitoque/hdlbr) +to generate nice websites for the reported data. + +## Usage with hdlbr + +```bash +repolocli -o json ... > data.json +hdlbr data.json template.html > output.html +``` diff --git a/etc/compare.html b/etc/compare.html new file mode 100644 index 0000000..38e150e --- /dev/null +++ b/etc/compare.html @@ -0,0 +1,45 @@ + + + + + +
+ + + + + + + + + + + {{~#each . as |t|}} + + + + + + {{~/each}} + +
PackageLocal VersionExternal Versions
{{t.package_name}}{{t.local_version}} + + + + + + + + + {{~#each t.comparisons as |c|}} + + + + + {{~/each}} + +
RepoVersion
{{c.repo}}{{c.version}}
+
+
+ + diff --git a/etc/problems.html b/etc/problems.html new file mode 100644 index 0000000..bbb66ef --- /dev/null +++ b/etc/problems.html @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + {{~#each . as |t|}} + + + + + + + {{~/each}} + +
RepoPackageMaintainerProblem
{{t.repo}}{{t.name}}{{t.maintainer}}{{t.problem}}
+ + diff --git a/etc/project.html b/etc/project.html new file mode 100644 index 0000000..74242e7 --- /dev/null +++ b/etc/project.html @@ -0,0 +1,36 @@ + + + + + +
+

+ {{#if .}} + {{#with . as |t|}} + {{t.[0].name}} + {{/with}} + {{/if}} +

+
+ + + + + + + + + + + {{~#each . as |t|}} + + + + + + {{~/each}} + +
RepoVersionStatus
{{t.repo}}{{t.version}}{{t.status}}
+
+ + -- cgit v1.2.3