feat(users/Profpatsch): add die_* helpers for semantic exit errors

There is this semantic exit code schema championed by execline and
skaware tooling, and we refined and documented it a bit in lorri
d1d673d420/src/ops/mod.rs (L24-L35)
in the past.

This just transcribes the error messages into simple helper functions.

Applies the functions to the places where we would panic or die
`sys::exit()` instead.

Change-Id: I15ca05cd6f99a25a3378518be94110eab416354e
Reviewed-on: https://cl.tvl.fyi/c/depot/+/2475
Tested-by: BuildkiteCI
Reviewed-by: Profpatsch <mail@profpatsch.de>
This commit is contained in:
Profpatsch 2021-01-31 16:38:21 +01:00
parent 83634341aa
commit 492b79ec7a
5 changed files with 80 additions and 28 deletions

View file

@ -1,4 +1,5 @@
extern crate nom;
extern crate exec_helpers;
use std::collections::HashMap;
use std::io::{Write, Read};
@ -116,15 +117,15 @@ pub fn text(s: String) -> T {
T::Text(s)
}
pub fn t_from_stdin_or_panic(prog_name: &str) -> T {
pub fn t_from_stdin_or_die_user_error(prog_name: &str) -> T {
let mut buf = vec![];
std::io::stdin().lock().read_to_end(&mut buf);
match parse::t_t(&buf) {
Ok((rest, t)) => match rest {
b"" => t,
_ => panic!("{}: stdin contained some soup after netencode value: {:?}", prog_name, rest)
_ => exec_helpers::die_user_error(prog_name, format!("stdin contained some soup after netencode value: {:?}", rest))
},
Err(err) => panic!("{}: unable to parse netencode from stdin: {:?}", prog_name, err)
Err(err) => exec_helpers::die_user_error(prog_name, format!("unable to parse netencode from stdin: {:?}", err))
}
}