qemu_command_builder/
fw_cfg.rs1use bon::Builder;
2use std::path::PathBuf;
3
4use crate::to_command::ToCommand;
5
6pub enum StringOrPathBuf {
7 String(String),
8 PathBuf(PathBuf),
9}
10
11#[derive(Default, Builder)]
12pub struct FwCfg {
13 name: Option<String>,
14 data: Option<StringOrPathBuf>,
15}
16
17impl ToCommand for FwCfg {
18 fn to_command(&self) -> Vec<String> {
19 let mut cmd = vec![];
20
21 cmd.push("-fw_cfg".to_string());
22
23 let mut args = vec![];
24 if let Some(name) = &self.name {
25 args.push(format!("name={}", name));
26 }
27 if let Some(data) = &self.data {
28 match &data {
29 StringOrPathBuf::String(string) => {
30 args.push(format!("string={}", string));
31 }
32 StringOrPathBuf::PathBuf(path) => {
33 args.push(format!("file={}", path.display()));
34 }
35 }
36 }
37 cmd.push(args.join(","));
38 cmd
39 }
40}