From 71ca10e865c4b42fa050a00e97ccf10768308211 Mon Sep 17 00:00:00 2001
From: Awiteb
Date: Thu, 9 May 2024 13:26:08 +0300
Subject: [PATCH] chore: A clap parser to parse key value args
---
src/clap_parsers.rs | 30 ++++++++++++++++++++++++++++++
src/main.rs | 2 ++
2 files changed, 32 insertions(+)
create mode 100644 src/clap_parsers.rs
diff --git a/src/clap_parsers.rs b/src/clap_parsers.rs
new file mode 100644
index 0000000..e2bdacd
--- /dev/null
+++ b/src/clap_parsers.rs
@@ -0,0 +1,30 @@
+// Lprs - A local CLI vault manager
+// Copyright (C) 2024 Awiteb
+//
+// This program is free software: you can redistribute it and/or modify
+// it under the terms of the GNU General Public License as published by
+// the Free Software Foundation, either version 3 of the License, or
+// (at your option) any later version.
+//
+// This program is distributed in the hope that it will be useful,
+// but WITHOUT ANY WARRANTY; without even the implied warranty of
+// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+// GNU General Public License for more details.
+//
+// You should have received a copy of the GNU General Public License
+// along with this program. If not, see .
+
+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)> {
+ if let Some((key, value)) = value.split_once('=') {
+ Ok((key.trim().to_owned(), value.trim().to_owned()))
+ } else {
+ Err(LprsError::ArgParse(
+ "There is no value, the syntax is `KEY=VALUE`".to_owned(),
+ ))
+ }
+}
diff --git a/src/main.rs b/src/main.rs
index ba59a86..dc27b93 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -21,6 +21,8 @@ use std::process::ExitCode;
use clap::Parser;
use inquire::InquireError;
+/// A set of clap vaule parsers used to parse some CLI arguments
+pub mod clap_parsers;
/// The main module of the lprs crate, contains the cli and the commands.
pub mod cli;
/// The errors module, contains the errors and the result type.