Skip to main content

tftio_cli_common/
error.rs

1//! Shared error presentation.
2
3use crate::JsonOutput;
4use crate::runner::FatalCliError;
5
6/// Build a shared fatal CLI error value.
7#[must_use]
8pub fn fatal_error(
9    command: impl Into<String>,
10    output: JsonOutput,
11    message: impl Into<String>,
12) -> FatalCliError {
13    FatalCliError::new(command, output, message)
14}
15
16/// Print a standard error response and return a failing exit code.
17#[must_use]
18pub fn print_error(command: &str, output: JsonOutput, message: &str) -> i32 {
19    fatal_error(command, output, message).emit_and_exit_code()
20}
21
22#[cfg(test)]
23mod tests {
24    use super::*;
25
26    #[test]
27    fn print_error_returns_failure_exit_code() {
28        assert_eq!(print_error("list", JsonOutput::Text, "bad"), 1);
29    }
30
31    #[test]
32    fn fatal_error_preserves_command_and_json_mode() {
33        let error = fatal_error("scan", JsonOutput::Json, "bad");
34        assert_eq!(error.command(), "scan");
35        assert_eq!(error.output(), JsonOutput::Json);
36    }
37}