pkg_manager 0.1.1

Wrapper to Linux Package Managers
Documentation
use crate::pkgmanager::PkgManager;
use std::process::Command;
use std::process::Child;

pub struct Pacman {
    no_confirm:bool
}

impl Pacman {
    pub fn new() ->Self {
        Self {
            no_confirm: false
        }
    }
}

impl PkgManager for Pacman {
    fn install(&mut self, pkg: String) -> Result<Child, std::io::Error> {
        let args = if self.no_confirm {
            vec!["-Rns".into(), pkg, "--noconfirm".into()]
        } else {
            vec!["-Rns".into(), pkg]
        };
        let mut pacman = Command::new("pacman");
        let pacman = pacman.args(args);
        pacman.spawn()
    }
    fn uninstall(&mut self, pkg: String) -> Result<Child, std::io::Error> {
        let args = if self.no_confirm {
            vec!["-S".into(), pkg, "--noconfirm".into()]
        } else {
            vec!["-S".into(), pkg]
        };
        let mut pacman = Command::new("pacman");
        let pacman = pacman.args(args);
        pacman.spawn()
    }
    fn no_confirm(&mut self, set: bool) {
        self.no_confirm = set;
    }
    fn get_name(&self) -> String {
        "pacman".into()
    }
}