pub fn get_string(prompt: &str) -> String {
get_input(prompt, false).unwrap_or_default()
}
pub fn get_password(prompt: &str) -> String {
get_input(prompt, true).unwrap_or_default()
}
fn get_input(prompt: &str, is_password: bool) -> Option<String> {
if is_password {
println!("{}:{}", GET_CMD_PASSWORD, prompt);
} else {
println!("{}:{}", GET_CMD, prompt);
}
let mut line = String::new();
std::io::stdin().read_line(&mut line).ok()?;
Some(line.trim().to_owned())
}
#[doc(hidden)]
pub const GET_CMD: &str = "SMO_INPUT_REQUEST";
#[doc(hidden)]
pub const GET_CMD_PASSWORD: &str = "SMO_INPUT_REQUEST_PASSWORD";