use serde::{Deserialize, Serialize};
#[derive(Clone, Debug, Serialize, Deserialize)]
pub struct FsWatchEvent {
pub kind: String,
pub paths: Vec<String>,
pub relative_paths: Vec<String>,
pub raw_kind: String,
pub error: Option<String>,
}
#[derive(Clone, Copy, Debug, Eq, PartialEq, Hash, Serialize, Deserialize)]
pub enum WorkerEvent {
WorkerSpawned,
WorkerProgressed,
WorkerWaitingForInput,
WorkerSuspended,
WorkerResumed,
WorkerCompleted,
WorkerFailed,
WorkerCancelled,
}
impl WorkerEvent {
pub const ALL: [Self; 8] = [
Self::WorkerSpawned,
Self::WorkerProgressed,
Self::WorkerWaitingForInput,
Self::WorkerSuspended,
Self::WorkerResumed,
Self::WorkerCompleted,
Self::WorkerFailed,
Self::WorkerCancelled,
];
pub fn as_status(self) -> &'static str {
match self {
Self::WorkerSpawned => "running",
Self::WorkerProgressed => "progressed",
Self::WorkerWaitingForInput => "awaiting_input",
Self::WorkerSuspended => "suspended",
Self::WorkerResumed => "running",
Self::WorkerCompleted => "completed",
Self::WorkerFailed => "failed",
Self::WorkerCancelled => "cancelled",
}
}
pub fn as_str(self) -> &'static str {
match self {
Self::WorkerSpawned => "WorkerSpawned",
Self::WorkerProgressed => "WorkerProgressed",
Self::WorkerWaitingForInput => "WorkerWaitingForInput",
Self::WorkerSuspended => "WorkerSuspended",
Self::WorkerResumed => "WorkerResumed",
Self::WorkerCompleted => "WorkerCompleted",
Self::WorkerFailed => "WorkerFailed",
Self::WorkerCancelled => "WorkerCancelled",
}
}
pub fn is_terminal(self) -> bool {
matches!(
self,
Self::WorkerCompleted | Self::WorkerFailed | Self::WorkerCancelled
)
}
}