use crate::exec::cli::{
CheckKeysArgs, CreateGitignoreArgs, InitArgs, InstallArgs, ListArgs, NewArgs, PackArgs, RunArgs, UnpackArgs,
XelfSetupArgs, XelfUpdateArgs,
};
use crate::model::Id;
use crate::run::RunSubAgentParams;
use derive_more::From;
#[derive(Debug, strum::IntoStaticStr, From)]
pub enum ExecActionEvent {
CmdInit(InitArgs),
CmdInitBase,
CmdList(ListArgs),
CmdPack(PackArgs),
CmdInstall(InstallArgs),
CmdUnpack(UnpackArgs),
CmdCheckKeys(CheckKeysArgs),
CmdCreateGitignore(CreateGitignoreArgs),
CmdXelfSetup(XelfSetupArgs),
CmdXelfUpdate(XelfUpdateArgs),
Run(RunArgs),
OpenAgent,
Redo,
#[from]
RunSubAgent(RunSubAgentParams),
CancelRun,
WorkConfirm(Id),
WorkCancel(Id),
CmdNew(NewArgs),
}
impl ExecActionEvent {
pub fn as_str(&self) -> &'static str {
self.into()
}
pub fn is_tui(&self) -> bool {
match self {
ExecActionEvent::Run(run_args) => run_args.is_tui(),
ExecActionEvent::Redo
| ExecActionEvent::CancelRun
| ExecActionEvent::WorkConfirm(_)
| ExecActionEvent::WorkCancel(_)
| ExecActionEvent::OpenAgent => true,
_ => false,
}
}
}