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