summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Beyer <mail@beyermatthias.de>2019-04-23 16:52:40 +0200
committerGitHub <noreply@github.com>2019-04-23 16:52:40 +0200
commitcf4edeadab3f54b328cbdd17e6d2ca8ac92e4a85 (patch)
tree3cb3059605f28b72dd651596ad7a8156b46fb4b7
parent216ddd82b9edce6e75502d24bcfc0420d0f16f0c (diff)
parent44dbd947df219266ed0b3da5b77fc7c2a60f9552 (diff)
Merge pull request #2 from matthiasbeyer/frontend-json
Implement JSON frontend
-rw-r--r--src/frontend/json.rs48
1 files changed, 4 insertions, 44 deletions
diff --git a/src/frontend/json.rs b/src/frontend/json.rs
index 7430040..9cf5573 100644
--- a/src/frontend/json.rs
+++ b/src/frontend/json.rs
@@ -18,56 +18,16 @@ impl JsonFrontend {
}
impl Frontend for JsonFrontend {
- /// TODO: Implement to-JSON
fn list_packages(&self, packages: Vec<Package>) -> Result<()> {
+ let output = serde_json::ser::to_string_pretty(&packages).map_err(Error::from)?;
let mut outlock = self.0.lock();
-
- packages.iter().fold(Ok(()), |accu, package| {
- accu.and_then(|_| {
- let status = if let Some(stat) = package.status() {
- format!("{}", stat)
- } else {
- String::from("No status")
- }; // not optimal, but works for now.
-
- let url = if let Some(url) = package.www() {
- if let Some(url) = url.first() {
- format!("{}", url.deref())
- } else {
- String::from("")
- }
- } else {
- String::from("")
- }; // not optimal, but works for now
-
- writeln!(outlock,
- "{name:10} - {version:8} - {repo:15} - {status:5} - {www}",
- name = package.name().deref(),
- version = package.version().deref(),
- repo = package.repo().deref(),
- status = status,
- www = url).map(|_| ()).map_err(Error::from)
- })
- })
+ writeln!(outlock, "{}", output).map_err(Error::from)
}
- /// TODO: Implement to-JSON
fn list_problems(&self, problems: Vec<Problem>) -> Result<()> {
+ let output = serde_json::ser::to_string_pretty(&problems).map_err(Error::from)?;
let mut outlock = self.0.lock();
-
- problems.iter().fold(Ok(()), |accu, problem| {
- accu.and_then(|_| {
- writeln!(outlock,
- "{repo:10} - {name:10} - {effname:10} - {maintainer:15} - {desc}",
- repo = problem.repo().deref(),
- name = problem.name().deref(),
- effname = problem.effname().deref(),
- maintainer = problem.maintainer().deref(),
- desc = problem.problem_description())
- .map(|_| ())
- .map_err(Error::from)
- })
- })
+ writeln!(outlock, "{}", output).map_err(Error::from)
}
}