pub mod json;
use dialoguer::Confirm;
use std::fmt::{self, Display};
pub fn confirm(prompt: impl Into<String>) -> bool {
Confirm::new()
.with_prompt(prompt)
.default(false)
.wait_for_newline(true)
.interact()
.unwrap_or(false)
}
pub struct MaybeStr<'a>(pub &'a [u8]);
impl Display for MaybeStr<'_> {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
if let Ok(s) = std::str::from_utf8(self.0) {
write!(f, "{s}")
} else {
let bytes_per_line = 12;
for (i, byte) in self.0.iter().enumerate() {
if i > 0 {
if f.alternate() && i % bytes_per_line == 0 {
writeln!(f)?;
} else {
write!(f, " ")?;
}
}
write!(f, "{byte:02x}")?;
}
Ok(())
}
}
}