diff --git a/src/main.rs b/src/main.rs index 4b0223e..656fc45 100644 --- a/src/main.rs +++ b/src/main.rs @@ -282,17 +282,10 @@ fn main() { print_message(MessageType::OK, &format!("BUILDER_HOME = {}", &builder_desc.home)); let mut new_env = get_env_with_java_home(&java_home); - let builder_home_env = match builder_desc.name { BuilderName::Maven => "MAVEN_HOME", BuilderName::Gradle => "GRADLE_HOME", }; - new_env.insert(builder_home_env.to_string(), builder_desc.home.clone()); - + new_env.insert(builder_desc.get_builder_home_name(), builder_desc.home.clone()); process_envs(&mut new_env, &build_json_object); - let cmd_bin = match builder_desc.name { - BuilderName::Maven => builder_desc.bin.unwrap_or(format!("{}/bin/mvn", builder_desc.home.clone())), - BuilderName::Gradle => builder_desc.bin.unwrap_or(format!("{}/bin/gradle", builder_desc.home.clone())), - }; - - let mut cmd = Command::new(cmd_bin); + let mut cmd = Command::new(builder_desc.get_builder_bin()); cmd.envs(&new_env); let final_args = match get_final_args(&args, &build_json_object) { diff --git a/src/tool.rs b/src/tool.rs index 15a79f7..e81bb17 100644 --- a/src/tool.rs +++ b/src/tool.rs @@ -34,6 +34,27 @@ pub struct BuilderDesc { pub bin: Option, } +impl BuilderDesc { + pub fn get_builder_home_name(&self) -> String { + match self.name { + BuilderName::Maven => "MAVEN_HOME".to_string(), + BuilderName::Gradle => "GRADLE_HOME".to_string(), + } + } + + pub fn get_builder_bin(&self) -> String { + match &self.bin { + Some(b) => b.clone(), + None => { + match self.name { + BuilderName::Maven => format!("{}/bin/mvn", self.home.clone()), + BuilderName::Gradle => format!("{}/bin/gradle", self.home.clone()), + } + } + } + } +} + pub fn get_builder_home(builder: &str, version: &str) -> Option { let local_builder_home_base_dir = match get_user_home_dir(LOCAL_BUILDER_HOME_BASE_DIR) { Err(_) => return None,