use crate::utils::cmd::Cmd; use super::{PackageError, PackageList, SpecificPackageManager}; pub fn apt() -> Cmd { Cmd::new("apt").env("DEBIAN_FRONTEND", "noninteractive") } #[derive(Debug)] pub struct DebianPackageManager; impl SpecificPackageManager for DebianPackageManager { fn name(&self) -> &'static str { "apt" } fn update(&self) -> Result<(), PackageError> { let res = apt().arg("update").run()?; if ! res.success { return Err(PackageError::CmdFail(res)); } Ok(()) } fn install(&self, list: PackageList) -> Result<(), PackageError> { let res = apt().arg("install").args(list.list()).run()?; if ! res.success { return Err(PackageError::CmdFail(res)); } Ok(()) } fn remove(&self, list: PackageList) -> Result<(), PackageError> { let res = apt().arg("remove").args(list.list()).run()?; if ! res.success { return Err(PackageError::CmdFail(res)); } Ok(()) } }