diff --git a/01_phase_rust_src/sv-rustit/src/executor.rs b/01_phase_rust_src/sv-rustit/src/executor.rs index eae1327..bcd588e 100644 --- a/01_phase_rust_src/sv-rustit/src/executor.rs +++ b/01_phase_rust_src/sv-rustit/src/executor.rs @@ -1,41 +1,17 @@ -pub mod sent_signal; - -use crate::status_obj; +pub mod execute_service; pub fn execute(svdir_var: String, svwait_var: i32, verbose: i8, command: &str, services: Vec) -> i32{ + // split a service vector into different sv. let mut exit_code: i32 = 0; - for sv in services { - let ch1 = sv.chars().next().unwrap(); - let ch2_row = &sv.chars().collect::>()[..2]; - let ch2: String = ch2_row.into_iter().collect(); - let path; - - if ch1 == '/' || ch2 == "~/"{ - // case absolute path for the service - // - path = sv.clone(); - } else { - // case relative path for the service. - // - path = svdir_var.clone() + "/" + &sv; + exit_code += execute_service::execute_service(svdir_var.clone(), svwait_var, verbose, command, sv); + if exit_code > 99 { + exit_code = 99; } - - let status_option = status_obj::StatusObj::new(path, sv); - match status_option { - Some(status) => { - exit_code += sent_signal::sent_signal(svwait_var, verbose, command, status); - }, - None => { - if exit_code < 99 { - exit_code += 1; - } - }, - }; } return exit_code - } + diff --git a/01_phase_rust_src/sv-rustit/src/executor/execute_service.rs b/01_phase_rust_src/sv-rustit/src/executor/execute_service.rs new file mode 100644 index 0000000..db675ac --- /dev/null +++ b/01_phase_rust_src/sv-rustit/src/executor/execute_service.rs @@ -0,0 +1,22 @@ + +mod sent_signal; +mod make_path; + +use crate::status_obj; + +pub fn execute_service(svdir_var: String, svwait_var: i32, verbose: i8, command: &str, sv: String) -> i32 { + // make a sv object from a string, svdir_var, and sent it the command signal. + + let path = make_path::make_path(svdir_var, sv.clone()); + + let status_option = status_obj::StatusObj::new(path, sv); + match status_option { + Some(status) => { + return sent_signal::sent_signal(svwait_var, verbose, command, status); + }, + None => { + return 1; + }, + }; +} + diff --git a/01_phase_rust_src/sv-rustit/src/executor/execute_service/make_path.rs b/01_phase_rust_src/sv-rustit/src/executor/execute_service/make_path.rs new file mode 100644 index 0000000..2e807c1 --- /dev/null +++ b/01_phase_rust_src/sv-rustit/src/executor/execute_service/make_path.rs @@ -0,0 +1,17 @@ + +pub fn make_path(svdir_var: String, sv: String) -> String { + let ch1 = sv.chars().next().unwrap(); + let ch2_row = &sv.chars().collect::>()[..2]; + let ch2: String = ch2_row.into_iter().collect(); + let path; + + if ch1 == '/' || ch2 == "~/"{ + // case absolute path for the service + path = sv; + } else { + // case relative path for the service. + path = svdir_var + "/" + &sv; + } + + return path +} diff --git a/01_phase_rust_src/sv-rustit/src/executor/sent_signal.rs b/01_phase_rust_src/sv-rustit/src/executor/execute_service/sent_signal.rs similarity index 99% rename from 01_phase_rust_src/sv-rustit/src/executor/sent_signal.rs rename to 01_phase_rust_src/sv-rustit/src/executor/execute_service/sent_signal.rs index 9f8e344..5479880 100644 --- a/01_phase_rust_src/sv-rustit/src/executor/sent_signal.rs +++ b/01_phase_rust_src/sv-rustit/src/executor/execute_service/sent_signal.rs @@ -31,5 +31,3 @@ pub fn sent_signal( svwait_var: i32, verbose: i8, command: &str, mut sv: status_ }; } - - diff --git a/01_phase_rust_src/sv-rustit/src/executor/sent_signal/misc.rs b/01_phase_rust_src/sv-rustit/src/executor/execute_service/sent_signal/misc.rs similarity index 100% rename from 01_phase_rust_src/sv-rustit/src/executor/sent_signal/misc.rs rename to 01_phase_rust_src/sv-rustit/src/executor/execute_service/sent_signal/misc.rs