use std::collections::HashMap;
use schemars::JsonSchema;
use serde::{Deserialize, Serialize};
use super::build::BuildHooksConfig;
use super::release::{SkipPushConfig, skip_push_schema};
use super::{StringOrBool, deserialize_string_or_bool_opt};
#[derive(Debug, Clone, Serialize, Deserialize, Default, JsonSchema)]
#[serde(default)]
pub struct DockerRetryConfig {
pub attempts: Option<u32>,
pub delay: Option<String>,
pub max_delay: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, JsonSchema)]
#[serde(default, deny_unknown_fields)]
pub struct DockerV2Config {
pub id: Option<String>,
pub ids: Option<Vec<String>>,
pub dockerfile: String,
pub images: Vec<String>,
pub tags: Vec<String>,
pub labels: Option<HashMap<String, String>>,
pub annotations: Option<HashMap<String, String>>,
pub extra_files: Option<Vec<String>>,
pub platforms: Option<Vec<String>>,
pub build_args: Option<HashMap<String, String>>,
pub retry: Option<DockerRetryConfig>,
pub flags: Option<Vec<String>>,
#[serde(
default,
alias = "disable",
deserialize_with = "deserialize_string_or_bool_opt"
)]
pub skip: Option<StringOrBool>,
#[serde(deserialize_with = "deserialize_string_or_bool_opt", default)]
pub sbom: Option<StringOrBool>,
pub hooks: Option<BuildHooksConfig>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, JsonSchema)]
#[serde(default)]
pub struct DockerDigestConfig {
#[serde(deserialize_with = "deserialize_string_or_bool_opt", default)]
pub skip: Option<StringOrBool>,
pub name_template: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize, Default, JsonSchema)]
#[serde(default)]
pub struct DockerManifestConfig {
pub name_template: String,
pub image_templates: Vec<String>,
pub create_flags: Option<Vec<String>>,
pub push_flags: Option<Vec<String>>,
#[schemars(schema_with = "skip_push_schema")]
pub skip_push: Option<SkipPushConfig>,
pub id: Option<String>,
#[serde(rename = "use")]
pub use_backend: Option<String>,
pub retry: Option<DockerRetryConfig>,
}