pub mod modules;
use clap::{ArgMatches, Command};
pub trait CliModule {
fn name(&self) -> &'static str;
#[allow(dead_code)]
fn about(&self) -> &'static str;
fn command(&self) -> Command;
fn run(&self, matches: &ArgMatches) -> Result<(), Box<dyn std::error::Error>>;
}
#[allow(clippy::vec_init_then_push, unused_mut)]
pub fn all() -> Vec<Box<dyn CliModule>> {
let mut clis: Vec<Box<dyn CliModule>> = Vec::new();
#[cfg(feature = "mouse-teleporter")]
clis.push(Box::new(modules::mouse_teleporter::MouseTeleporterCli));
#[cfg(feature = "window-hider")]
clis.push(Box::new(modules::window_hider::WindowHiderCli));
#[cfg(feature = "window-party")]
clis.push(Box::new(modules::window_party::WindowPartyCli));
#[cfg(feature = "window-wobbler")]
clis.push(Box::new(modules::window_wobbler::WindowWobblerCli));
clis
}