1#[derive(Debug, Clone, PartialEq, Eq)]
3pub enum TargetBootMode {
4 Bootloader,
6 Recovery,
8 Other(String),
10}
11
12impl TargetBootMode {
13 pub fn as_arg(&self) -> &str {
15 match self {
16 Self::Bootloader => "-bootloader",
17 Self::Recovery => "-recovery",
18 Self::Other(value) => value.as_str(),
19 }
20 }
21}
22
23impl From<&str> for TargetBootMode {
24 fn from(value: &str) -> Self {
25 match value {
26 "-bootloader" | "bootloader" => Self::Bootloader,
27 "-recovery" | "recovery" => Self::Recovery,
28 other => Self::Other(other.to_string()),
29 }
30 }
31}
32
33#[derive(Debug, Clone, PartialEq, Eq)]
35pub enum TargetMode {
36 Usb,
38 Port(Option<u16>),
40 PortClose,
42}
43
44#[cfg(test)]
45mod tests {
46 use super::*;
47
48 #[test]
49 fn target_boot_modes_render_upstream_args() {
50 assert_eq!(TargetBootMode::Bootloader.as_arg(), "-bootloader");
51 assert_eq!(TargetBootMode::Recovery.as_arg(), "-recovery");
52 assert_eq!(
53 TargetBootMode::Other("flashd".to_string()).as_arg(),
54 "flashd"
55 );
56 }
57}