use serde::{Deserialize, Serialize};
use crate::{config::ImageConfig, digest::Digest};
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Serialize, Deserialize)]
pub enum PullPolicy {
#[default]
IfMissing,
Always,
Never,
}
#[derive(Debug, Clone, Copy, Default, PartialEq, Eq, Serialize, Deserialize)]
#[serde(rename_all = "kebab-case")]
pub enum RootfsMaterialization {
#[default]
Layered,
Flat,
All,
}
#[derive(Debug, Clone, Default)]
pub struct PullOptions {
pub pull_policy: PullPolicy,
pub force: bool,
pub materialization: RootfsMaterialization,
}
pub struct PullResult {
pub layer_diff_ids: Vec<Digest>,
pub config: ImageConfig,
pub manifest_digest: Digest,
pub cached: bool,
}
impl RootfsMaterialization {
pub const fn includes_layered(self) -> bool {
matches!(self, Self::Layered | Self::All)
}
pub const fn includes_flat(self) -> bool {
matches!(self, Self::Flat | Self::All)
}
}