rustible/src/modules/package/apt.rs
selfhoster1312 1245db813b Add new Package examples to main
Print debug line with module arguments when run starts
Make apt package manager non-interactive
Move PackageList to dedicated module and make more impls
utils::Cmd now can take environment variables
2023-04-20 18:31:45 +02:00

43 lines
1 KiB
Rust

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(())
}
}