oci_util/image/build/config/
mod.rs1use 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}