convert pacman to first backend

This commit is contained in:
Dr. Matthias Ratajczak
2023-01-05 16:25:47 +01:00
parent 21d31bf4e4
commit 6e21a562bf
4 changed files with 21 additions and 12 deletions
+2 -2
View File
@@ -3,7 +3,7 @@ use criterion::{black_box, criterion_group, criterion_main, Criterion};
fn get_all_installed_packages(c: &mut Criterion) {
c.bench_function("get_all_installed_packages", |b| {
b.iter(|| {
black_box(pacdef::db::get_all_installed_packages());
black_box(pacdef::backend::get_all_installed_packages());
})
});
}
@@ -11,7 +11,7 @@ fn get_all_installed_packages(c: &mut Criterion) {
fn get_explicitly_installed_packages(c: &mut Criterion) {
c.bench_function("get_explicitly_installed_packages", |b| {
b.iter(|| {
black_box(pacdef::db::get_explicitly_installed_packages());
black_box(pacdef::backend::get_explicitly_installed_packages());
})
});
}
+14 -5
View File
@@ -5,14 +5,23 @@ use alpm::PackageReason::Explicit;
use crate::Package;
/// Get all packages that are installed in the system.
pub fn get_all_installed_packages() -> HashSet<Package> {
convert_to_pacdef_packages(get_all_installed_packages_from_alpm())
pub trait Backend {
/// Get all packages that are installed in the system.
fn get_all_installed_packages() -> HashSet<Package>;
/// Get all packages that were installed in the system explicitly.
fn get_explicitly_installed_packages() -> HashSet<Package>;
}
/// Get all packages that were installed in the system explicitly.
pub fn get_explicitly_installed_packages() -> HashSet<Package> {
pub struct Pacman;
impl Backend for Pacman {
fn get_all_installed_packages() -> HashSet<Package> {
convert_to_pacdef_packages(get_all_installed_packages_from_alpm())
}
fn get_explicitly_installed_packages() -> HashSet<Package> {
convert_to_pacdef_packages(get_explicitly_installed_packages_from_alpm())
}
}
fn get_all_installed_packages_from_alpm() -> HashSet<String> {
+3 -3
View File
@@ -5,8 +5,8 @@ use anyhow::{bail, Context, Result};
use clap::ArgMatches;
use crate::action;
use crate::backend::{Backend, Pacman};
use crate::cmd::{run_edit_command, run_install_command, run_remove_command};
use crate::db::{get_all_installed_packages, get_explicitly_installed_packages};
use crate::ui::get_user_confirmation;
use crate::Group;
use crate::Package;
@@ -37,7 +37,7 @@ impl Pacdef {
pub(crate) fn get_packages_to_install(&mut self) -> Vec<Package> {
let managed = self.take_packages_as_set();
let local_packages = get_all_installed_packages();
let local_packages = Pacman::get_all_installed_packages();
let mut diff: Vec<_> = managed
.into_iter()
.filter(|p| !local_packages.contains(p))
@@ -108,7 +108,7 @@ impl Pacdef {
/// Returns a `Vec` of alphabetically sorted unmanaged packages.
pub(crate) fn get_unmanaged_packages(&mut self) -> Vec<Package> {
let managed = self.take_packages_as_set();
let explicitly_installed = get_explicitly_installed_packages();
let explicitly_installed = Pacman::get_explicitly_installed_packages();
let mut result: Vec<_> = explicitly_installed
.into_iter()
.filter(|p| !managed.contains(p))
+1 -1
View File
@@ -1,8 +1,8 @@
mod action;
pub mod args;
pub mod backend;
mod cmd;
mod core;
pub mod db;
mod env;
mod group;
mod package;