use super::{command_mechanism, ActionMechanism, ActionSpec};
use sysknife_types::RiskLevel;
pub fn install_package(package: &str) -> ActionSpec {
ActionSpec {
action_name: "AddLayeredPackage",
mechanism: command_mechanism("sudo", ["apt-get", "install", "-y", package]),
risk_level: RiskLevel::High,
reboot_required: false,
rollback_available: false,
}
}
pub fn remove_package(package: &str) -> ActionSpec {
ActionSpec {
action_name: "RemoveLayeredPackage",
mechanism: command_mechanism("sudo", ["apt-get", "remove", "-y", package]),
risk_level: RiskLevel::High,
reboot_required: false,
rollback_available: false,
}
}
pub fn install_packages(packages: &[&str]) -> ActionSpec {
let mut args = vec![
"apt-get".to_string(),
"install".to_string(),
"-y".to_string(),
];
args.extend(packages.iter().map(|s| s.to_string()));
ActionSpec {
action_name: "InstallPackages",
mechanism: ActionMechanism::Command {
program: "sudo",
args,
},
risk_level: RiskLevel::High,
reboot_required: false,
rollback_available: false,
}
}
pub fn remove_packages(packages: &[&str]) -> ActionSpec {
let mut args = vec![
"apt-get".to_string(),
"remove".to_string(),
"-y".to_string(),
];
args.extend(packages.iter().map(|s| s.to_string()));
ActionSpec {
action_name: "RemovePackages",
mechanism: ActionMechanism::Command {
program: "sudo",
args,
},
risk_level: RiskLevel::High,
reboot_required: false,
rollback_available: false,
}
}