butterflow_models/
step.rs1use schemars::JsonSchema;
2use serde::{Deserialize, Serialize};
3use std::collections::HashMap;
4use ts_rs::TS;
5#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, TS)]
7pub struct Step {
8 pub name: String,
10
11 #[serde(flatten)]
13 pub action: StepAction,
14
15 #[serde(default)]
17 #[ts(optional, as = "Option<HashMap<String, String>>")]
18 pub env: Option<HashMap<String, String>>,
19}
20
21#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, TS)]
23#[serde(rename_all = "snake_case")]
24pub enum StepAction {
25 #[serde(rename = "use")]
27 UseTemplate(TemplateUse),
28
29 #[serde(rename = "run")]
31 RunScript(String),
32
33 #[serde(rename = "ast-grep")]
35 AstGrep(UseAstGrep),
36}
37
38#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, TS)]
40pub struct TemplateUse {
41 pub template: String,
43
44 #[serde(default)]
46 #[ts(optional, as = "Option<HashMap<String, String>>")]
47 pub inputs: HashMap<String, String>,
48}
49
50#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, TS)]
51#[serde(rename_all = "snake_case")]
52pub struct UseAstGrep {
53 pub paths: Vec<String>,
55
56 pub query: UseAstGrepQuery,
58}
59
60#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema, TS)]
61#[serde(rename_all = "snake_case")]
62pub enum UseAstGrepQuery {
63 Inline(String),
65
66 File(String),
68}