From 674333b03092b7a4d07f7f4396c8654dfd503fc6 Mon Sep 17 00:00:00 2001 From: Jonas_Jones <91549607+J-onasJones@users.noreply.github.com> Date: Tue, 20 Sep 2022 01:12:36 +0200 Subject: [PATCH] added flag processing --- src/main.rs | 59 ++++++++++++++++++++++++++++++++++++++++++----------- 1 file changed, 47 insertions(+), 12 deletions(-) diff --git a/src/main.rs b/src/main.rs index 312bd2b..f2d72a3 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,22 +1,57 @@ use std::env; mod cliargs; +mod errorhandler; -fn main() { +fn main() +{ let args: Vec = env::args().collect(); - for i in args.iter() + let flags: Vec<&str> = ["-h", "--help", "-v", "--version", "-i", "--install"]; + flagcheck(args, flags); + flagprocessing(args, flags); + +} + +// NEW CONCEPT CAUSE OLD ONE IS GARBAGE: +// - move args from old to new vector one by one when checked +// - spit out error when leftover elements in old vector +// - process elements of new vector + +fn flagcheck(args: Vec, flags: Vec<&str>) +{ + let mut skip = 1; //first element in flags vector always skipped since it's the scripts directory and therefore garbage data + for c in args.iter() { - match i.as_str() + if !flags.contains(&c) { - "--help" => cliargs::help(), - _ => { - if !args.iter().position(|r| r.as_str() == i).unwrap().parse() == 0 - { - println!("Error") - } else { - println!("{}", args.iter().position(|r| r.as_str() == i).unwrap()); - } - }, + errorhandler::error(c.as_str()); + std::process::exit(-1); + } else { + match c.as_str() + { + "-i" => skip += 1 + } + } + } +} + +fn flagprocessing(args: Vec, flags: Vec<&str>) +{ + let mut skip = 1; //first element in flags vector always skipped since it's the scripts directory and therefore garbage data + for c in args.iter() + { + if skip == 0 + { + match c.as_str() + { + "--help" => cliargs::help(), + _ => { + errorhandler::unexpectederror(); + std::process::exit(-1); + }, + } + } else { + skip -= 1; } } } \ No newline at end of file