use std::{
env,
io::{stdin, IsTerminal as _, Read as _},
};
use fallible_iterator::FallibleIterator as _;
use sqlite3_parser::lexer::sql::Parser;
fn main() {
env_logger::init();
let args = env::args();
if args.len() == 1 && !stdin().is_terminal() {
let mut str = String::with_capacity(1024);
stdin().read_to_string(&mut str).unwrap();
parse(str);
}
for arg in args.skip(1) {
parse(arg);
}
}
fn parse(arg: String) {
let mut parser = Parser::new(arg.as_bytes());
loop {
match parser.next() {
Ok(None) => break,
Err(err) => {
eprintln!("Err: {err} in {arg}");
break;
}
Ok(Some(cmd)) => {
println!("{cmd}");
}
}
}
}