diff options
Diffstat (limited to 'src/frontend')
-rw-r--r-- | src/frontend/json.rs | 49 | ||||
-rw-r--r-- | src/frontend/list.rs | 31 | ||||
-rw-r--r-- | src/frontend/mod.rs | 8 | ||||
-rw-r--r-- | src/frontend/table.rs | 27 |
4 files changed, 0 insertions, 115 deletions
diff --git a/src/frontend/json.rs b/src/frontend/json.rs index 42e44d1..2a7f40a 100644 --- a/src/frontend/json.rs +++ b/src/frontend/json.rs @@ -1,17 +1,12 @@ use std::io::Stdout; use std::io::Write; -use std::ops::Deref; use anyhow::Error; use anyhow::Result; use librepology::v1::types::Package; use librepology::v1::types::Problem; -use librepology::v1::types::Repo; -use crate::backend::Backend; -use crate::compare::ComparePackage; use crate::frontend::Frontend; -use librepology::v1::api::Api; pub struct JsonFrontend(Stdout); @@ -43,48 +38,4 @@ impl Frontend for JsonFrontend { fn list_problems(&self, problems: Vec<Problem>) -> Result<()> { self.write(serde_json::ser::to_string_pretty(&problems).map_err(Error::from)?) } - - fn compare_packages( - &self, - packages: Vec<ComparePackage>, - backend: &Backend, - filter_repos: Vec<Repo>, - ) -> Result<()> { - #[derive(Serialize)] - struct PackageComp { - // not optimal, as we have to clone the inner variables from the package - // but using references is too complicated right now - package_name: String, - local_version: String, - comparisons: Vec<CompareTarget>, - } - - #[derive(Serialize)] - struct CompareTarget { - version: String, - repo: String, - } - - let mut output: Vec<PackageComp> = vec![]; - - for package in packages.iter() { - let comparisons = backend - .project(package.name().deref())? - .into_iter() - .filter(|p| filter_repos.contains(p.repo())) - .map(|upstream_package| CompareTarget { - version: upstream_package.version().deref().clone(), - repo: upstream_package.repo().deref().clone(), - }) - .collect(); - - output.push(PackageComp { - package_name: package.name().clone(), - local_version: package.version().clone(), - comparisons, - }); - } - - self.write(serde_json::ser::to_string_pretty(&output)?) - } } diff --git a/src/frontend/list.rs b/src/frontend/list.rs index 469d6ec..9e06828 100644 --- a/src/frontend/list.rs +++ b/src/frontend/list.rs @@ -7,12 +7,8 @@ use anyhow::Result; use librepology::v1::types::Name; use librepology::v1::types::Package; use librepology::v1::types::Problem; -use librepology::v1::types::Repo; -use crate::backend::Backend; -use crate::compare::ComparePackage; use crate::frontend::Frontend; -use librepology::v1::api::Api; pub struct ListFrontend(Stdout); @@ -86,31 +82,4 @@ impl Frontend for ListFrontend { }) } - fn compare_packages( - &self, - packages: Vec<ComparePackage>, - backend: &Backend, - filter_repos: Vec<Repo>, - ) -> Result<()> { - let mut output = self.0.lock(); - - for package in packages { - backend - .project(package.name().deref())? - .into_iter() - .filter(|p| filter_repos.contains(p.repo())) - .map(|upstream_package| { - writeln!(output, - "{our_package_name} - {our_package_version} - {up_repo_name} - {up_package_version}", - our_package_name = package.name().deref(), - our_package_version = package.version().deref(), - up_repo_name = upstream_package.repo().deref(), - up_package_version = upstream_package.version().deref() - ).map_err(Error::from) - }) - .collect::<Result<Vec<()>>>()?; - } - - Ok(()) - } } diff --git a/src/frontend/mod.rs b/src/frontend/mod.rs index c9ef381..f1d5001 100644 --- a/src/frontend/mod.rs +++ b/src/frontend/mod.rs @@ -3,8 +3,6 @@ use clap::ArgMatches; use librepology::v1::types::*; -use crate::backend::Backend; -use crate::compare::ComparePackage; use crate::config::Configuration; use crate::frontend::json::JsonFrontend; use crate::frontend::list::ListFrontend; @@ -14,12 +12,6 @@ use crate::frontend::table::TableFrontend; pub trait Frontend { fn list_packages(&self, packages: Vec<Package>) -> Result<()>; fn list_problems(&self, problems: Vec<Problem>) -> Result<()>; - fn compare_packages( - &self, - packages: Vec<ComparePackage>, - backend: &Backend, - filter_repos: Vec<Repo>, - ) -> Result<()>; } pub mod json; diff --git a/src/frontend/table.rs b/src/frontend/table.rs index 6bb42d2..6a18af3 100644 --- a/src/frontend/table.rs +++ b/src/frontend/table.rs @@ -5,14 +5,10 @@ use anyhow::Result; use librepology::v1::types::Name; use librepology::v1::types::Package; use librepology::v1::types::Problem; -use librepology::v1::types::Repo; use prettytable::format; use prettytable::Table; -use crate::backend::Backend; -use crate::compare::ComparePackage; use crate::frontend::Frontend; -use librepology::v1::api::Api; /// A Frontend that formats the output in a nice ASCII-art table pub struct TableFrontend(Stdout); @@ -95,27 +91,4 @@ impl Frontend for TableFrontend { self.print(table) } - fn compare_packages( - &self, - packages: Vec<ComparePackage>, - backend: &Backend, - filter_repos: Vec<Repo>, - ) -> Result<()> { - let mut table = self.mktable(); - for package in packages { - backend - .project(package.name().deref())? - .into_iter() - .filter(|p| filter_repos.contains(p.repo())) - .for_each(|upstream_package| { - table.add_row(row![ - package.name().clone(), - package.version().clone(), - upstream_package.repo().clone(), - upstream_package.version().clone(), - ]); - }); - } - self.print(table) - } } |