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.