//! The executor event

use derive_more::derive::Display;

/// This is the status event sent by the executor to the Hub.
///
/// NOTE: This is not sent to the executor.command_tx is they are not commands,
///       but status events.
#[derive(Debug, Clone, Display)]
pub enum ExecStatusEvent {
	/// Start an exec command like run,  init, ...
	/// Get triggers for all executor event
	StartExec,

	/// Emitted at the start of the Run/Redo of agent
	RunStart,

	/// Emitted at the end of the Run/Redo of agent
	RunEnd,

	/// The end of an exec command
	/// Get triggers for all executor event
	/// Note: When watch mode is on, the EndExec will be sent after the watch mode is started,
	///       but not when it finished (because it won't finished by definition)
	///       So, EndExec always get triggered for each ExecCommand
	EndExec,
}
