1use std::collections::BTreeMap;
6
7use schemars::JsonSchema as DeriveJsonSchema;
8use serde::{Deserialize, Serialize};
9
10use crate::executor::ArchiveId;
11
12#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, DeriveJsonSchema)]
13#[serde(rename_all = "snake_case")]
14pub enum Level {
15 Trace,
16 Debug,
17 Info,
18 Warn,
19 Error,
20}
21
22#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, DeriveJsonSchema)]
23#[serde(rename_all = "snake_case")]
24pub enum KvScope {
25 Plugin,
28 Build,
30 Step,
32}
33
34#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize, DeriveJsonSchema)]
37#[serde(transparent)]
38pub struct SocketHandle(pub u64);
39
40#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize, DeriveJsonSchema)]
43#[serde(transparent)]
44pub struct LoopbackHandle(pub u64);
45
46#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
48pub struct ArchiveReadArgs {
49 pub id: ArchiveId,
50 pub offset: u64,
51 pub max: u64,
52}
53
54#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
56pub struct CallbackData {
57 pub path: String,
58 pub query: BTreeMap<String, String>,
59}
60
61#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
63pub struct KeyringArgs {
64 pub service: String,
65 pub account: String,
66}
67
68#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
70pub struct KeyringSetArgs {
71 pub service: String,
72 pub account: String,
73 pub secret: String,
74}
75
76#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
78pub struct LoopbackRecvArgs {
79 pub h: LoopbackHandle,
80 pub timeout_ms: u32,
81}
82
83#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
85pub struct SocketReadArgs {
86 pub h: SocketHandle,
87 pub max: u64,
88}
89
90#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
92pub struct SocketWriteArgs {
93 pub h: SocketHandle,
94 pub bytes: Vec<u8>,
95}
96
97#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
99pub struct TtyConfirmArgs {
100 pub msg: String,
101 pub default: bool,
102}
103
104#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
106pub struct TtyPromptArgs {
107 pub msg: String,
108 pub mask: bool,
109}
110
111#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, DeriveJsonSchema)]
113pub struct DockerStartArgs {
114 pub image: String,
115 pub env: std::collections::BTreeMap<String, String>,
116 pub workdir: String,
117 pub name_hint: String,
118}
119
120#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, DeriveJsonSchema)]
122pub struct DockerExecArgs {
123 pub container_id: String,
124 pub cmd: Vec<String>,
125 pub env: std::collections::BTreeMap<String, String>,
126 pub workdir: String,
127 pub stdin_archive_id: Option<crate::ArchiveId>,
130}
131
132#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, DeriveJsonSchema)]
134pub struct DockerCommitArgs {
135 pub container_id: String,
136 pub tag: String,
137}
138
139#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, DeriveJsonSchema)]
141pub struct DockerExtractArgs {
142 pub container_id: String,
143 pub archive_id: crate::ArchiveId,
144 pub workdir: String,
145}