1use std::any::Any;
2
3use anyhow::Error;
4
5pub mod apk;
6pub mod apt;
7pub mod brew;
8pub mod curl;
9pub mod dnf;
10pub mod emerge;
11pub mod fleek;
12pub mod git;
13pub mod home_manager;
14pub mod nix;
15pub mod pacman;
16pub mod slackpkg;
17pub mod yum;
18pub mod zypper;
19
20pub trait Installer {
21 fn install(&self) -> Result<(), Error>;
22 fn is_installed(&self) -> Result<bool, Error>;
23 fn name(&self) -> &str;
24 fn version(&self) -> &str;
25 fn dependencies(&self) -> Vec<String>;
26 fn is_default(&self) -> bool;
27 fn provider(&self) -> &str;
28 fn as_any(&self) -> &dyn Any;
29}