ckb_app_config/
exit_code.rs

1use std::io;
2
3/// Uses 0, 64 - 113 as exit code.
4#[repr(i32)]
5#[derive(Copy, Clone, Debug, PartialEq, Eq)]
6pub enum ExitCode {
7    /// Command line arguments error.
8    Cli = 64,
9    /// Config options error.
10    Config = 65,
11    /// Operation system I/O error.
12    IO = 66,
13    /// General application failures.
14    Failure = 113,
15}
16
17impl ExitCode {
18    /// Converts into signed 32-bit integer which can be used as the process exit status.
19    pub fn into(self) -> i32 {
20        self as i32
21    }
22}
23
24impl From<io::Error> for ExitCode {
25    fn from(err: io::Error) -> ExitCode {
26        eprintln!("IO Error: {err:?}");
27        ExitCode::IO
28    }
29}
30
31impl From<toml::de::Error> for ExitCode {
32    fn from(err: toml::de::Error) -> ExitCode {
33        eprintln!("Config Error: {err:?}");
34        ExitCode::Config
35    }
36}
37
38impl From<ckb_logger::SetLoggerError> for ExitCode {
39    fn from(err: ckb_logger::SetLoggerError) -> ExitCode {
40        eprintln!("Config Error: {err:?}");
41        ExitCode::Config
42    }
43}