From bbc2a7a9447804d31d949c1d8d1143336c5dad79 Mon Sep 17 00:00:00 2001
From: Awiteb
Date: Sat, 17 Aug 2024 14:47:57 +0000
Subject: [PATCH] feat: Support key without value in custom fields parser
Signed-off-by: Awiteb
---
src/clap_parsers.rs | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
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))
}
}