diff --git a/01_phase_rust_src/sv/src/main.rs b/01_phase_rust_src/sv/src/main.rs index 2304b2d..8f722c3 100644 --- a/01_phase_rust_src/sv/src/main.rs +++ b/01_phase_rust_src/sv/src/main.rs @@ -1,8 +1,8 @@ -//mod misc; mod parser; use std::env; +use std::process::exit; fn main() { @@ -15,7 +15,7 @@ fn main() { Err(..) => "/run/runit/service".to_string(), }; - let svwait_var = match svwait_env { + let mut svwait_var = match svwait_env { Ok(env) => match env.parse::() { Ok(var) => var, Err(..) => 7, @@ -23,6 +23,8 @@ fn main() { Err(..) => 7, }; + let mut verbose = 0; + dbg!(svdir_var); dbg!(svwait_var); @@ -32,12 +34,52 @@ fn main() { let arg_parser: Vec = parser::parse_args(args); - dbg!(arg_parser); + //dbg!(arg_parser); + + + + let mut i = 0; + let mut command; + + for val in arg_parser.iter() { + if i == 0 { + if val == "-v" { + verbose = 1; + dbg!(verbose); + } + else if val == "-w" { + i = 3; + // take next parametter before returning to i = 0. + } + else if val == "--" { + i += 1; + } + else { + if val.len() == 2 { + println!("sv: illegal option -- {}", val.chars().nth(1).unwrap() ); + // TODO: thread NOT pannic if it is not an ASCII character. + } + parser::misc::usage(); + exit(100); + } + } + else if i == 1 { + command = val; + dbg!(command); + i += 1; + } + // TODO: Exec the command on all given services. + else if i == 3 { + svwait_var = match val.parse::() { + Ok(val) => val, + Err(..) => svwait_var, + }; + dbg!(svwait_var); + i = 0; + } + } - // TODO: Interpret the flags given if some are given. - // TODO: Set the command if it is given - // TODO: Exec the command on all given services. diff --git a/01_phase_rust_src/sv/src/parser.rs b/01_phase_rust_src/sv/src/parser.rs index 716011b..5c9c18e 100644 --- a/01_phase_rust_src/sv/src/parser.rs +++ b/01_phase_rust_src/sv/src/parser.rs @@ -1,6 +1,6 @@ -mod misc; +pub mod misc; use std::process::exit; @@ -18,6 +18,7 @@ pub fn parse_args(args: Vec) -> Vec{ tmpstr = parse_args_1(arg); if tmpstr == "--" { + parser.push("--".to_string()); i += 1; } if tmpstr == "-w" { @@ -30,6 +31,7 @@ pub fn parse_args(args: Vec) -> Vec{ } else if tmpstr == "" { // We are actually in phase II. Do exactly the same if it was phase II. + parser.push("--".to_string()); parser.push(phase2(arg)); i = 3; }