qemu_command_builder/
compact.rs1use 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}