use anyhow::Result; use crate::{ImageSpec, Stage}; #[derive(Debug, Clone, PartialEq, Eq)] pub struct BuildPlan { spec: ImageSpec, } impl BuildPlan { pub fn compile(spec: ImageSpec) -> Result { spec.validate()?; Ok(Self { spec }) } pub fn spec(&self) -> &ImageSpec { &self.spec } pub fn stages(&self) -> &'static [Stage] { &Stage::ORDERED } pub fn dependencies(&self, stage: Stage) -> &'static [Stage] { stage.dependencies() } }