1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
|
#![allow(clippy::exit)]
use std::env;
use std::error::Error;
use std::io;
use std::io::Write;
use std::process;
fn run() -> Result<(), Box<dyn Error>> {
if let Ok(text) = env::var("stdout") {
println!("{text}");
}
if let Ok(text) = env::var("stderr") {
eprintln!("{text}");
}
let code = env::var("exit")
.ok()
.map(|v| v.parse::<i32>())
.map(|r| r.map(Some))
.unwrap_or(Ok(None))?
.unwrap_or(0);
process::exit(code);
}
fn main() {
let code = match run() {
Ok(_) => 0,
Err(ref e) => {
write!(&mut io::stderr(), "{e}").expect("writing to stderr won't fail");
1
}
};
process::exit(code);
}
|