use schemars::JsonSchema as DeriveJsonSchema;
use serde::{Deserialize, Serialize};
use crate::events::BuildEvent;
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, DeriveJsonSchema)]
#[serde(deny_unknown_fields)]
pub struct HookEvent {
pub event: BuildEvent,
pub phase: HookPhase,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, DeriveJsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum HookPhase {
Before,
After,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, DeriveJsonSchema)]
#[serde(tag = "kind", rename_all = "snake_case")]
pub enum HookOutcome {
Continue,
Abort { reason: String },
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize, DeriveJsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum HookEventKind {
BuildStart,
StepQueued,
StepStart,
StepLog,
StepCacheHit,
StepEnd,
BuildEnd,
}