use std::{
fs::OpenOptions,
io::{self, BufRead, BufReader, Write},
};
use anyhow::Result;
use quirks::Edible;
pub struct Pipe;
impl Pipe {
pub fn drain() -> Result<String> {
let mut buffer = String::new();
let stdin = io::stdin();
for line in stdin.lock().lines() {
let line = line?;
buffer.push_str(&format!("{line}\n"));
}
let buffer = String::from(buffer.trim());
Ok(buffer)
}
pub fn user(prompt: Option<&str>) -> Result<String> {
let mut buffer = String::new();
let stdin = OpenOptions::new().read(true).open("/dev/tty")?;
let mut reader = BufReader::new(stdin);
match prompt {
Some(prompt) => print!("{}", prompt),
None => {}
}
io::stdout().flush()?;
reader.read_line(&mut buffer)?;
Ok(buffer.chomp())
}
}