rustible/src/modules/package/apt.rs

43 lines
1 KiB
Rust
Raw Normal View History

2023-04-19 21:49:30 +02:00
use crate::utils::cmd::Cmd;
use super::{PackageError, PackageList, SpecificPackageManager};
pub fn apt() -> Cmd {
Cmd::new("apt").env("DEBIAN_FRONTEND", "noninteractive")
}
2023-04-19 21:49:30 +02:00
#[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()?;
2023-04-19 21:49:30 +02:00
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()?;
2023-04-19 21:49:30 +02:00
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(())
2023-04-19 21:49:30 +02:00
}
}