From 846479e6bcf8238879546534b09e141b9bb668f8 Mon Sep 17 00:00:00 2001 From: omagdy Date: Sun, 20 Jul 2025 16:29:34 +0300 Subject: feat: Added parsing of simple command line arguments and CONFIG GET command implementation --- src/lib.rs | 44 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 44 insertions(+) (limited to 'src/lib.rs') diff --git a/src/lib.rs b/src/lib.rs index bf4f302..060106b 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -1,5 +1,49 @@ +use std::{env, sync::Arc}; + #[macro_use] pub mod macros; pub mod resp_commands; pub mod resp_parser; pub mod shared_cache; + +#[derive(Debug, Default)] +pub struct Config { + pub dir: Option, + pub dbfilename: Option, +} + +pub type SharedConfig = Arc>; + +impl Config { + pub fn new() -> Result { + let args: Vec = env::args().collect(); + + let mut dir = None; + let mut dbfilename = None; + + let mut i = 1; // Skip program name + while i < args.len() { + match args[i].as_str() { + "--dir" => { + if i + 1 >= args.len() { + return Err("--dir requires a value".to_string()); + } + dir = Some(args[i + 1].clone()); + i += 2; + } + "--dbfilename" => { + if i + 1 >= args.len() { + return Err("--dbfilename requires a value".to_string()); + } + dbfilename = Some(args[i + 1].clone()); + i += 2; + } + _ => { + return Err(format!("Unknown argument: {}", args[i])); + } + } + } + + Ok(Config { dir, dbfilename }) + } +} -- cgit v1.2.3