use std::collections::BTreeMap;
use schemars::JsonSchema as DeriveJsonSchema;
use serde::{Deserialize, Serialize};
use crate::executor::ArchiveId;
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, DeriveJsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum Level {
Trace,
Debug,
Info,
Warn,
Error,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Serialize, Deserialize, DeriveJsonSchema)]
#[serde(rename_all = "snake_case")]
pub enum KvScope {
Plugin,
Build,
Step,
}
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize, DeriveJsonSchema)]
#[serde(transparent)]
pub struct SocketHandle(pub u64);
#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize, DeriveJsonSchema)]
#[serde(transparent)]
pub struct LoopbackHandle(pub u64);
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct ArchiveReadArgs {
pub id: ArchiveId,
pub offset: u64,
pub max: u64,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct CallbackData {
pub path: String,
pub query: BTreeMap<String, String>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct KeyringArgs {
pub service: String,
pub account: String,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct KeyringSetArgs {
pub service: String,
pub account: String,
pub secret: String,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct LoopbackRecvArgs {
pub h: LoopbackHandle,
pub timeout_ms: u32,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct SocketReadArgs {
pub h: SocketHandle,
pub max: u64,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct SocketWriteArgs {
pub h: SocketHandle,
pub bytes: Vec<u8>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct TtyConfirmArgs {
pub msg: String,
pub default: bool,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize)]
pub struct TtyPromptArgs {
pub msg: String,
pub mask: bool,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, DeriveJsonSchema)]
pub struct DockerStartArgs {
pub image: String,
pub env: std::collections::BTreeMap<String, String>,
pub workdir: String,
pub name_hint: String,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, DeriveJsonSchema)]
pub struct DockerExecArgs {
pub container_id: String,
pub cmd: Vec<String>,
pub env: std::collections::BTreeMap<String, String>,
pub workdir: String,
pub stdin_archive_id: Option<crate::ArchiveId>,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, DeriveJsonSchema)]
pub struct DockerCommitArgs {
pub container_id: String,
pub tag: String,
}
#[derive(Debug, Clone, PartialEq, Eq, Serialize, Deserialize, DeriveJsonSchema)]
pub struct DockerExtractArgs {
pub container_id: String,
pub archive_id: crate::ArchiveId,
pub workdir: String,
}