#[derive(Debug, Clone, PartialEq, Eq)]
pub enum TargetBootMode {
Bootloader,
Recovery,
Other(String),
}
impl TargetBootMode {
pub fn as_arg(&self) -> &str {
match self {
Self::Bootloader => "-bootloader",
Self::Recovery => "-recovery",
Self::Other(value) => value.as_str(),
}
}
}
impl From<&str> for TargetBootMode {
fn from(value: &str) -> Self {
match value {
"-bootloader" | "bootloader" => Self::Bootloader,
"-recovery" | "recovery" => Self::Recovery,
other => Self::Other(other.to_string()),
}
}
}
#[derive(Debug, Clone, PartialEq, Eq)]
pub enum TargetMode {
Usb,
Port(Option<u16>),
PortClose,
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn target_boot_modes_render_upstream_args() {
assert_eq!(TargetBootMode::Bootloader.as_arg(), "-bootloader");
assert_eq!(TargetBootMode::Recovery.as_arg(), "-recovery");
assert_eq!(
TargetBootMode::Other("flashd".to_string()).as_arg(),
"flashd"
);
}
}