summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Beyer <mail@beyermatthias.de>2021-04-06 11:27:49 +0200
committerMatthias Beyer <mail@beyermatthias.de>2021-04-06 11:28:27 +0200
commite27a71016c222134a933464ce46a26925cc013bf (patch)
tree646004b96ad66c8b95f69fe819333b43eba70f51
parentebb741657bb850512dce02f0524a4a388fbe6857 (diff)
Rewrite CLI to use buffer API
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
-rw-r--r--src/backend.rs14
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();