clean up overwriting arch config

This commit is contained in:
steven-omaha
2023-02-23 15:32:02 +01:00
parent ee4fd5da37
commit 4a0ced581d
3 changed files with 15 additions and 15 deletions
@@ -1,3 +1,4 @@
use std::any::Any;
use std::collections::{HashMap, HashSet};
use std::fmt::Debug;
use std::process::{Command, ExitStatus};
@@ -114,6 +115,8 @@ pub trait Backend: Debug {
diff.sort_unstable();
Ok(diff)
}
fn as_any(&mut self) -> &mut dyn Any;
}
fn get_group_packages_map(
+4
View File
@@ -49,5 +49,9 @@ macro_rules! impl_backend_constants {
self.packages.insert(p);
}
}
fn as_any(&mut self) -> &mut dyn std::any::Any {
self
}
};
}
+8 -15
View File
@@ -1,4 +1,3 @@
use std::any::Any;
use std::collections::{HashMap, HashSet};
use std::fs::{remove_file, File};
use std::os::unix::fs::symlink;
@@ -94,8 +93,8 @@ impl Pacdef {
fn get_missing_packages(&mut self) -> ToDoPerBackend {
let mut to_install = ToDoPerBackend::new();
for backend in Backends::iter() {
let mut backend = self.overwrite_values_from_config(backend);
for mut backend in Backends::iter() {
self.overwrite_values_from_config(&mut *backend);
backend.load(&self.groups);
@@ -109,16 +108,10 @@ impl Pacdef {
}
#[allow(clippy::as_conversions)]
fn overwrite_values_from_config(&mut self, backend: Box<dyn Backend>) -> Box<dyn Backend> {
let b = Box::new(&backend as &dyn Any);
match b.downcast_ref::<Arch>() {
Some(inner) => {
let mut arch = inner.clone();
arch.binary = self.config.aur_helper.clone();
arch.aur_rm_args = self.config.aur_rm_args.take();
Box::new(arch)
}
None => backend,
fn overwrite_values_from_config(&mut self, backend: &mut dyn Backend) {
if let Some(arch) = backend.as_any().downcast_mut::<Arch>() {
arch.binary = self.config.aur_helper.clone();
arch.aur_rm_args = self.config.aur_rm_args.take();
}
}
@@ -173,8 +166,8 @@ impl Pacdef {
fn get_unmanaged_packages(&mut self) -> ToDoPerBackend {
let mut result = ToDoPerBackend::new();
for backend in Backends::iter() {
let mut backend = self.overwrite_values_from_config(backend);
for mut backend in Backends::iter() {
self.overwrite_values_from_config(&mut *backend);
backend.load(&self.groups);