diff options
author | Matthias Beyer <mail@beyermatthias.de> | 2021-04-06 11:27:49 +0200 |
---|---|---|
committer | Matthias Beyer <mail@beyermatthias.de> | 2021-04-06 11:28:27 +0200 |
commit | e27a71016c222134a933464ce46a26925cc013bf (patch) | |
tree | 646004b96ad66c8b95f69fe819333b43eba70f51 | |
parent | ebb741657bb850512dce02f0524a4a388fbe6857 (diff) |
Rewrite CLI to use buffer API
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
-rw-r--r-- | src/backend.rs | 14 |
1 files changed, 7 insertions, 7 deletions
diff --git a/src/backend.rs b/src/backend.rs index efc6f37..feba9d9 100644 --- a/src/backend.rs +++ b/src/backend.rs @@ -3,7 +3,7 @@ use clap::ArgMatches; use librepology::v1::api::Api; use librepology::v1::error::Result; use librepology::v1::restapi::RestApi; -use librepology::v1::stdinapi::StdinWrapper; +use librepology::v1::buffer::BufferApi; use librepology::v1::types::*; use crate::config::Configuration; @@ -11,7 +11,7 @@ use crate::config::Configuration; /// Helper type for cli implementation /// for being transparent in what backend we use pub enum Backend { - Stdin(StdinWrapper), + Buffer(BufferApi), RepologyOrg(RestApi), } @@ -21,30 +21,30 @@ pub enum Backend { impl Api for Backend { fn project<N: AsRef<str>>(&self, name: N) -> Result<Vec<Package>> { match self { - Backend::Stdin(inner) => inner.project(name), + Backend::Buffer(inner) => inner.project(name), Backend::RepologyOrg(inner) => inner.project(name), } } fn problems_for_repo<R: AsRef<str>>(&self, repo: R) -> Result<Vec<Problem>> { match self { - Backend::Stdin(inner) => inner.problems_for_repo(repo), + Backend::Buffer(inner) => inner.problems_for_repo(repo), Backend::RepologyOrg(inner) => inner.problems_for_repo(repo), } } fn problems_for_maintainer<M: AsRef<str>>(&self, maintainer: M) -> Result<Vec<Problem>> { match self { - Backend::Stdin(inner) => inner.problems_for_maintainer(maintainer), + Backend::Buffer(inner) => inner.problems_for_maintainer(maintainer), Backend::RepologyOrg(inner) => inner.problems_for_maintainer(maintainer), } } } -pub fn new_backend(app: &ArgMatches, config: &Configuration) -> Result<Backend> { +pub fn new_backend(app: &ArgMatches, config: &Configuration) -> anyhow::Result<Backend> { if app.is_present("input_stdin") { trace!("Building new STDIN backend"); - Ok(Backend::Stdin(StdinWrapper::from(::std::io::stdin()))) + BufferApi::read_from(std::io::stdin()).map(Backend::Buffer).map_err(anyhow::Error::from) } else { trace!("Building new remote backend"); let url = config.repology_url().as_str().into(); |