diff options
author | Matthias Beyer <mail@beyermatthias.de> | 2019-04-23 16:52:40 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-04-23 16:52:40 +0200 |
commit | cf4edeadab3f54b328cbdd17e6d2ca8ac92e4a85 (patch) | |
tree | 3cb3059605f28b72dd651596ad7a8156b46fb4b7 | |
parent | 216ddd82b9edce6e75502d24bcfc0420d0f16f0c (diff) | |
parent | 44dbd947df219266ed0b3da5b77fc7c2a60f9552 (diff) |
Merge pull request #2 from matthiasbeyer/frontend-json
Implement JSON frontend
-rw-r--r-- | src/frontend/json.rs | 48 |
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) } } |