qemu_command_builder/
compact.rs

1use crate::to_command::ToArg;
2use crate::to_command::ToCommand;
3use bon::Builder;
4
5pub enum AcceptRejectCrash {
6    Accept,
7    Reject,
8    Crash,
9}
10
11impl ToArg for AcceptRejectCrash {
12    fn to_arg(&self) -> &str {
13        match self {
14            AcceptRejectCrash::Accept => "accept",
15            AcceptRejectCrash::Reject => "reject",
16            AcceptRejectCrash::Crash => "crash",
17        }
18    }
19}
20pub enum AcceptHide {
21    Accept,
22    Hide,
23}
24impl ToArg for AcceptHide {
25    fn to_arg(&self) -> &str {
26        match self {
27            AcceptHide::Accept => "accept",
28            AcceptHide::Hide => "hide",
29        }
30    }
31}
32#[derive(Builder)]
33pub struct DeprecatedInput {
34    deprecated_input: AcceptRejectCrash,
35    deprecated_output: AcceptHide,
36}
37
38#[derive(Builder)]
39pub struct UnstableInput {
40    unstable_input: AcceptRejectCrash,
41    unstable_output: AcceptHide,
42}
43
44pub enum Compact {
45    DeprecatedInput(DeprecatedInput),
46    UnstableInput(UnstableInput),
47}
48
49impl ToCommand for Compact {
50    fn to_command(&self) -> Vec<String> {
51        let mut cmd = vec![];
52
53        cmd.push("-compact".to_string());
54
55        match self {
56            Compact::DeprecatedInput(deprecated_input) => {
57                let mut args = vec![];
58                args.push(format!(
59                    "deprecated-input={}",
60                    deprecated_input.deprecated_input.to_arg()
61                ));
62                args.push(format!(
63                    "deprecated-output={}",
64                    deprecated_input.deprecated_output.to_arg()
65                ));
66                cmd.push(args.join(","));
67            }
68            Compact::UnstableInput(unstable_input) => {
69                let mut args = vec![];
70                args.push(format!(
71                    "unstable-input={}",
72                    unstable_input.unstable_input.to_arg()
73                ));
74                args.push(format!(
75                    "unstable-output={}",
76                    unstable_input.unstable_output.to_arg()
77                ));
78                cmd.push(args.join(","));
79            }
80        }
81        cmd
82    }
83}