metrify/src/main.rs

52 lines
954 B
Rust

use metrify::run;
use std::env;
use std::io;
use std::io::Write;
use std::process;
fn main() {
let args: Vec<String> = env::args().collect();
let name = args[0].clone();
let args = args[1..].join(" ");
if args.is_empty() {
loop {
print!("> ");
match io::stdout().flush() {
Ok(_) => {}
Err(err) => {
eprintln!("{name}: Error: {err}");
process::exit(1);
}
}
let mut input = String::new();
match io::stdin().read_line(&mut input) {
Ok(_) => {}
Err(err) => {
eprintln!("{name}: Error: {err}");
process::exit(1);
}
}
if input.is_empty() {
println!(); // Add a newline if user pressed ^D
break;
}
match run(&input) {
Ok(str) => println!("{str}"),
Err(err) => {
eprintln!("Error: {err}");
}
}
}
} else {
match run(&args) {
Ok(str) => println!("{str}"),
Err(err) => {
eprintln!("{name}: Error: {err}");
process::exit(1);
}
}
}
}