use std::process::ExitCode;
fn main() -> ExitCode {
let cli = nodejs::cli::parse();
if let Some(src) = cli.eval {
return run_source(&src);
}
if let Some(file) = cli.file {
return match nodejs::eval_file(&file) {
Ok(_) => ExitCode::SUCCESS,
Err(e) => fail(&e),
};
}
let src = std::io::read_to_string(std::io::stdin()).unwrap_or_default();
run_source(&src)
}
fn run_source(src: &str) -> ExitCode {
match nodejs::eval_str(src) {
Ok(_) => ExitCode::SUCCESS,
Err(e) => fail(&e),
}
}
fn fail(msg: &str) -> ExitCode {
eprintln!("node: {msg}");
ExitCode::FAILURE
}