From 1c6f9fa8b6a782128de3f5925d5ecb0773e7548b Mon Sep 17 00:00:00 2001 From: "Hatter Jiang@Pixelbook" Date: Sat, 10 Aug 2019 15:54:39 +0800 Subject: [PATCH] add get_final_args --- src/main.rs | 69 ++++++++++++++++++++++++++++++----------------------- 1 file changed, 39 insertions(+), 30 deletions(-) diff --git a/src/main.rs b/src/main.rs index 5896ccd..faeceb2 100644 --- a/src/main.rs +++ b/src/main.rs @@ -136,6 +136,39 @@ fn do_with_buildin_args(args: &Vec) { } } +fn get_final_args(args: &Vec, build_json_object: json::JsonValue) -> Option> { + let mut final_args:Vec = vec![]; + if args.len() > 1 { + let arg1 = &args[1]; + if arg1.starts_with("::") { + let a_cmd = &arg1[2..]; + let a_cmd_j = &build_json_object["xArgs"][a_cmd]; + if a_cmd_j.is_null() { + print_message(MessageType::WARN, &format!("xArgs argument not found: {}", a_cmd)); + if args.len() == 2 { + print_message(MessageType::ERROR, "Only one xArgs argument, exit."); + return None; + } + final_args.push(arg1.to_string()); + } else { + for a_j in a_cmd_j.members() { + if ! a_j.is_null() { + final_args.push(a_j.as_str().unwrap().to_string()); + } + } + } + } else { + final_args.push(arg1.to_string()); + } + } + if args.len() > 2 { + for i in 2..args.len() { + final_args.push(args[i].to_string()); + } + } + Some(final_args) +} + fn main() { print_message(MessageType::INFO, &format!("{} - version {} - {}", BUILDJ, BUDERJ_VER, &GIT_HASH[0..7])); @@ -249,35 +282,11 @@ fn main() { let mut cmd = Command::new(cmd_bin); cmd.envs(&new_env); - let mut final_args:Vec = vec![]; - if args.len() > 1 { - let arg1 = &args[1]; - if arg1.starts_with("::") { - let a_cmd = &arg1[2..]; - let a_cmd_j = &build_json_object["xArgs"][a_cmd]; - if a_cmd_j.is_null() { - print_message(MessageType::WARN, &format!("xArgs argument not found: {}", a_cmd)); - if args.len() == 2 { - print_message(MessageType::ERROR, "Only one xArgs argument, exit."); - return; - } - final_args.push(arg1.to_string()); - } else { - for a_j in a_cmd_j.members() { - if ! a_j.is_null() { - final_args.push(a_j.as_str().unwrap().to_string()); - } - } - } - } else { - final_args.push(arg1.to_string()); - } - } - if args.len() > 2 { - for i in 2..args.len() { - final_args.push(args[i].to_string()); - } - } + + let final_args = match get_final_args(&args, build_json_object) { + None => return, + Some(fa) => fa, + }; if *VERBOSE { print_message(MessageType::DEBUG, &format!("Final arguments: {:?}", &final_args)); } @@ -293,4 +302,4 @@ fn main() { run_command_and_wait(&mut cmd).unwrap_or_else(|err| { print_message(MessageType::ERROR, &format!("Run build command failed: {}", err)); }); -} \ No newline at end of file +}