diff --git a/src/clap_parsers.rs b/src/clap_parsers.rs index 05a423e..7666505 100644 --- a/src/clap_parsers.rs +++ b/src/clap_parsers.rs @@ -19,12 +19,14 @@ use crate::{LprsError, LprsResult}; /// Parse the key & value arguments. /// ## Errors /// - If the argument value syntax not `key=value` -pub fn kv_parser(value: &str) -> LprsResult<(String, String)> { +pub fn kv_parser(value: &str) -> LprsResult<(String, Option)> { if let Some((key, value)) = value.split_once('=') { - Ok((key.trim().to_owned(), value.trim().to_owned())) - } else { + Ok((key.trim().to_owned(), Some(value.trim().to_owned()))) + } else if value.trim().is_empty() { Err(LprsError::ArgParse( - "There is no value, the syntax is `KEY=VALUE`".to_owned(), + "Invalid key, the syntax is `KEY(=VALUE)?`".to_owned(), )) + } else { + Ok((value.trim().to_owned(), None)) } }