qemu_command_builder/
fw_cfg.rs

1use 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}