diff options
| author | omagdy <omar.professional8777@gmail.com> | 2025-07-20 16:29:34 +0300 |
|---|---|---|
| committer | omagdy <omar.professional8777@gmail.com> | 2025-07-20 16:29:34 +0300 |
| commit | 846479e6bcf8238879546534b09e141b9bb668f8 (patch) | |
| tree | ac2e65b5842bea095107c0a750843d0cf7bc74b4 /src/lib.rs | |
| parent | 38b649ea16d8ed053fd9222bfb9867e3432ee2a6 (diff) | |
| download | redis-rust-846479e6bcf8238879546534b09e141b9bb668f8.tar.xz redis-rust-846479e6bcf8238879546534b09e141b9bb668f8.zip | |
feat: Added parsing of simple command line arguments and CONFIG GET command implementation
Diffstat (limited to 'src/lib.rs')
| -rw-r--r-- | src/lib.rs | 44 |
1 files changed, 44 insertions, 0 deletions
@@ -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<String>, + pub dbfilename: Option<String>, +} + +pub type SharedConfig = Arc<Option<Config>>; + +impl Config { + pub fn new() -> Result<Config, String> { + let args: Vec<String> = 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 }) + } +} |
