use anyhow::Result;
use crate::build::{BuildExecutor, BuildSystem, ExecutionRequest, ExecutionResult};
use crate::core::default_maven::DefaultMaven;
use crate::core::execution::MavenExecutionRequest;
pub struct MavenBuildExecutor {
maven: DefaultMaven,
}
impl Default for MavenBuildExecutor {
fn default() -> Self {
Self::new()
}
}
impl MavenBuildExecutor {
pub fn new() -> Self {
Self {
maven: DefaultMaven::new(),
}
}
}
impl BuildExecutor for MavenBuildExecutor {
fn execute(&self, request: ExecutionRequest) -> Result<ExecutionResult> {
let mut maven_request = MavenExecutionRequest::new(request.base_directory);
maven_request.goals = request.goals;
maven_request.system_properties = request.system_properties;
maven_request.show_errors = request.show_errors;
let maven_result = self.maven.execute(maven_request)?;
Ok(ExecutionResult {
success: maven_result.success,
errors: maven_result.exceptions.iter().map(|e| e.to_string()).collect(),
})
}
fn build_system(&self) -> BuildSystem {
BuildSystem::Maven
}
}