diff options
| -rw-r--r-- | Cargo.lock | 7 | ||||
| -rw-r--r-- | Cargo.toml | 1 | ||||
| -rw-r--r-- | src/main.rs | 16 | 
3 files changed, 23 insertions, 1 deletions
| @@ -65,6 +65,12 @@ dependencies = [  ]  [[package]] +name = "exitcode" +version = "1.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "de853764b47027c2e862a995c34978ffa63c1501f2e15f987ba11bd4f9bba193" + +[[package]]  name = "hashbrown"  version = "0.7.2"  source = "registry+https://github.com/rust-lang/crates.io-index" @@ -90,6 +96,7 @@ name = "ottolangy"  version = "0.0.1"  dependencies = [   "anyhow", + "exitcode",   "mailparse",   "thiserror",   "whatlang", @@ -5,6 +5,7 @@ edition = "2018"  [dependencies]  anyhow = "1.0.38" +exitcode = "1.1.2"  mailparse = "0.13.2"  thiserror = "1.0.24"  whatlang = "0.11.1" diff --git a/src/main.rs b/src/main.rs index 2775155..a50b42d 100644 --- a/src/main.rs +++ b/src/main.rs @@ -14,6 +14,7 @@  // along with this program. If not, see <https://www.gnu.org/licenses/>.  use anyhow::{anyhow, Context, Error}; +use exitcode;  use mailparse;  use thiserror;  use whatlang::{self, Lang}; @@ -21,6 +22,7 @@ use xdg;  use std::fs::File;  use std::io::{self, Read, Write}; +use std::process;  const PROGRAM_NAME: &'static str = "ottolangy"; @@ -59,7 +61,19 @@ enum OttolangyError {  fn main() {      match run() {          Ok(_) => (), -        Err(e) => eprintln!("{}: error: {}", PROGRAM_NAME, e), +        Err(e) => { +            eprintln!("{}: error: {}", PROGRAM_NAME, e); + +            match e.downcast_ref::<OttolangyError>() { +                Some(OttolangyError::ParseMail(_)) => +                    process::exit(exitcode::DATAERR), +                Some(OttolangyError::ParseMailUnknown) => +                    process::exit(exitcode::DATAERR), +                Some(OttolangyError::Xdg(_)) => process::exit(exitcode::IOERR), +                Some(OttolangyError::Io(_)) => process::exit(exitcode::IOERR), +                None => process::exit(exitcode::UNAVAILABLE), +            } +        },      }  } | 
