oci_util/image/build/config/
mod.rs

1use crate::image::build::config::instructions::{Copy, Dest, Kind};
2use anyhow::bail;
3use log::warn;
4
5pub mod instructions;
6#[derive(Debug)]
7pub struct BuildConfig {
8    pub kind: Kind,
9    pub copys: Vec<Copy>,
10    pub cmd: Dest,
11}
12
13#[derive(Default)]
14pub struct BuildConfigBuilder {
15    pub kind: Option<Kind>,
16    pub copys: Vec<Copy>,
17    pub cmd: Option<Dest>,
18}
19
20impl BuildConfigBuilder {
21    pub fn build(self) -> anyhow::Result<BuildConfig> {
22        if let Some(cmd) = self.cmd {
23            if let Some(kind) = self.kind {
24                Ok(BuildConfig {
25                    cmd,
26                    kind,
27                    copys: self.copys,
28                })
29            } else {
30                bail!("配置项KIND缺失");
31            }
32        } else {
33            bail!("配置项CMD缺失");
34        }
35    }
36    pub fn append_copy(&mut self, copy: Copy) {
37        self.copys.push(copy);
38    }
39    pub fn mut_cmd(&mut self, cmd: Dest) {
40        if self.cmd.is_some() {
41            warn!("Cmd重复配置!");
42        }
43        let _ = self.cmd.insert(cmd);
44    }
45    pub fn mut_kind(&mut self, kind: Kind) {
46        if self.kind.is_some() {
47            warn!("Kind重复配置!");
48        }
49        let _ = self.kind.insert(kind);
50    }
51}