Handle errors and exit in command line programs easily
Go to file
moparisthebest 0c52f36562
All checks were successful
moparisthebest/die/pipeline/head This commit looks good
Fix attribute warning
2020-11-26 18:32:34 -05:00
.ci Abandon travis-ci for jenkins 2020-11-26 18:32:27 -05:00
src Fix attribute warning 2020-11-26 18:32:34 -05:00
.gitignore Version 0.1.0 2019-02-21 23:42:10 -05:00
Cargo.lock Version 0.2.0 2019-02-22 00:55:11 -05:00
Cargo.toml Version 0.2.0 2019-02-22 00:55:11 -05:00
LICENSE-APACHE Version 0.1.0 2019-02-21 23:42:10 -05:00
LICENSE-MIT Version 0.1.0 2019-02-21 23:42:10 -05:00
README.md Abandon travis-ci for jenkins 2020-11-26 18:32:27 -05:00

die

Build Status Latest Version Documentation

die is a simple Rust library to make it easy to handle errors and exit in command line programs.

# Cargo.toml
[dependencies]
die = "0.2"

Example usage:

use die::Die;
// Result:
Ok(1).die("no number"); // unwraps to 1 successfully
Err("failure").die("strange error"); // prints `strange error` to stderr then exits with code 1

// Option: 
Some(1).die("no number"); // unwraps to 1 successfully
None.die("none option"); // prints `none option` to stderr then exits with code 1

// custom error codes:
Err("failure").die_code("strange error", 4); // prints `strange error` to stderr then exits with code 4
None.die_code("none option", 5); // prints `none option` to stderr then exits with code 5

// die! macro:
die!("argument to -e must be numeric"); // prints message to stderr then exits with code 1
die!(2; "argument to -e must be numeric"); // prints message to stderr then exits with code 2
die!("argument to -e must be numeric"; 3); // prints message to stderr then exits with code 3
die!("argument {} must be {}", "-e", 1; 4); // prints `argument -e must be 1` to stderr then exits with code 4
die!("argument {} must be {}", "-e", 1); // prints `argument -e must be 1` to stderr then exits with code 1
die!(2); // prints nothing, only exits with code 3
die!(); // prints nothing, only exits with code 1

License

This project is licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in die by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.