pub mod commandaction;
pub mod errors;
pub mod i3action;
pub use crate::actions::commandaction::CommandAction;
pub use crate::actions::errors::ActionError;
pub use crate::actions::i3action::{I3Action, SharedConnection};
use std::fmt;
use strum::{Display, EnumString, EnumVariantNames};
#[derive(Display, EnumString, EnumVariantNames)]
#[strum(serialize_all = "kebab_case")]
pub enum ActionType {
I3,
Command,
}
pub trait Action: std::fmt::Debug {
fn execute_command(&mut self) -> Result<(), ActionError>;
fn fmt_command(&self, f: &mut fmt::Formatter) -> fmt::Result;
}
impl fmt::Display for dyn Action {
fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
self.fmt_command(f)
}
}