diff --git a/src/main.rs b/src/main.rs index 46dfc9b..ecfe692 100644 --- a/src/main.rs +++ b/src/main.rs @@ -4,6 +4,7 @@ mod models; mod parsers; mod syncers; mod utilities; +mod version; use std::env; @@ -24,6 +25,12 @@ async fn main() { act_mgr.initialize(); let chosen_act = act_mgr.retrieve_icarus_action(); + for act in &chosen_act.flags { + if act.flag == "-v" { + version::print_version(); + utilities::checks::exit_program(-1); + } + } chosen_act.print_action_and_flags(); let mut cmt_mgr = managers::commit_manager::CommitManager { diff --git a/src/managers/action_managers.rs b/src/managers/action_managers.rs index 680981c..e1eae3c 100644 --- a/src/managers/action_managers.rs +++ b/src/managers/action_managers.rs @@ -48,6 +48,7 @@ impl ActionManager { String::from("-ca"), String::from("-smca"), String::from("-t"), + String::from("-v") ] } @@ -63,31 +64,24 @@ impl ActionManager { } fn validate_flags(&mut self) { - println!("Validating flags"); - let flag_vals = self.parsed_flags(); let mut i = 0; - println!("Flag count: {}", flag_vals.len()); while i < flag_vals.len() { let flag = &flag_vals[i]; - println!("Index: {i} | Value: {flag}"); let mut flg = models::flags::Flags::default(); // TODO: Refactor this if self.is_valid_flag(flag) && self.does_flag_have_value(flag) { - println!("Flag has value"); flg.flag = String::from(flag); flg.value = String::from(&flag_vals[i + 1]); i += 1; } else if self.is_valid_flag(flag) { - println!("Flag does not have a value"); flg.flag = String::from(flag); } else { - println!("Flag {flag} is not valid"); utilities::checks::exit_program(-1); } @@ -155,9 +149,16 @@ impl ActionManager { fn parsed_flags(&self) -> Vec { let mut parsed: Vec = Vec::new(); - for i in 2..self.params.len() { - let flag = String::from(&self.params[i]); - parsed.push(flag); + if self.param_count <= 2 { + let flag = String::from(&self.params[1]); + if flag == "-v" { + parsed.push(flag); + } + } else { + for i in 2..self.params.len() { + let flag = String::from(&self.params[i]); + parsed.push(flag); + } } parsed diff --git a/src/version.rs b/src/version.rs new file mode 100644 index 0000000..10eaa46 --- /dev/null +++ b/src/version.rs @@ -0,0 +1,6 @@ +pub fn print_version() { + let name = env!("CARGO_PKG_NAME"); + let version = env!("CARGO_PKG_VERSION"); + + println!("{name:?} {version:?}"); +}