diff --git a/src/cli.rs b/src/cli.rs index 808125d..769d706 100644 --- a/src/cli.rs +++ b/src/cli.rs @@ -1,7 +1,9 @@ +use crate::error::ExitCode; use crate::ipc::commands::Command; use crate::ipc::responses::Response; -use clap::Parser; +use clap::{Parser, ValueEnum}; use serde::{Deserialize, Serialize}; +use std::process::exit; #[derive(Parser, Debug, Serialize, Deserialize)] #[command(version)] @@ -38,6 +40,8 @@ pub enum Format { } pub fn handle_response(response: Response, format: Format) { + let is_err = matches!(response, Response::Err { .. }); + match format { Format::Plain => match response { Response::Ok => println!("ok"), @@ -49,4 +53,8 @@ pub fn handle_response(response: Response, format: Format) { serde_json::to_string(&response).expect("to be valid json") ), } + + if is_err { + exit(ExitCode::IpcResponseError as i32) + } } diff --git a/src/error.rs b/src/error.rs index 7ceb6b3..66f30cd 100644 --- a/src/error.rs +++ b/src/error.rs @@ -2,6 +2,7 @@ pub enum ExitCode { GtkDisplay = 1, CreateBars = 2, + IpcResponseError = 3, } pub const ERR_MUTEX_LOCK: &str = "Failed to get lock on Mutex";