libkelp/lib/structs/pm.rs
1use anyhow::Result;
2/// Base trait for PM integrations
3pub trait PackageManager {
4 fn install_packages(&mut self, packages: Vec<String>) -> Result<()>;
5 fn install_package(&mut self, package: &str) -> Result<()>;
6 fn new() -> Self;
7}
8/// Packages managers such as NPM or cargo
9pub trait ExternalPackageManager: PackageManager {
10 fn install_on_distro<T: PackageManager>(&mut self, pm: T) -> Result<()>;
11}