hm_plugin_protocol/
hook.rs1use schemars::JsonSchema as DeriveJsonSchema;
4use serde::{Deserialize, Serialize};
5
6use crate::events::BuildEvent;
7
8#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, DeriveJsonSchema)]
11#[serde(deny_unknown_fields)]
12pub struct HookEvent {
13 pub event: BuildEvent,
14 pub phase: HookPhase,
15}
16
17#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, DeriveJsonSchema)]
18#[serde(rename_all = "snake_case")]
19pub enum HookPhase {
20 Before,
22 After,
24}
25
26#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, DeriveJsonSchema)]
27#[serde(tag = "kind", rename_all = "snake_case")]
28pub enum HookOutcome {
29 Continue,
31 Abort { reason: String },
34}
35
36#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize, DeriveJsonSchema)]
41#[serde(rename_all = "snake_case")]
42pub enum HookEventKind {
43 BuildStart,
44 StepQueued,
45 StepStart,
46 StepLog,
47 StepCacheHit,
48 StepEnd,
49 BuildEnd,
50}