Skip to main content

optic_core/
proc.rs

1use crate::{log_fatal, log_info, log_warn};
2use std::process;
3
4/// Success exit code (0).
5pub const SUCCESS: i32 = 0;
6/// Error exit code (1).
7pub const ERROR: i32 = 1;
8
9/// Terminate the process with the given exit code.
10///
11/// Dispatches to [`end_success`] or [`end_error`] for known codes.
12pub fn end(code: i32) {
13    match code {
14        SUCCESS => end_success(),
15        ERROR => end_error(),
16        _ => {
17            log_warn!("ending with custom exit code: {code}");
18            process::exit(code);
19        }
20    }
21}
22
23/// Print a success message and exit with code 0.
24pub fn end_success() {
25    log_info!("process ended successfully! (code {SUCCESS})");
26    process::exit(SUCCESS)
27}
28
29/// Print a fatal error message and exit with code 1.
30pub fn end_error() {
31    log_fatal!("process ended due to fatal error! (code {ERROR})");
32    process::exit(ERROR)
33}