use crate::core::config::{FluxConfig, Step};
use crate::core::detect::Detection;
#[derive(Debug, Clone)]
pub struct Pipeline {
pub project: String,
pub language: String,
pub steps: Vec<Step>,
}
impl Pipeline {
pub fn resolve(config: &FluxConfig, detection: &Detection) -> Pipeline {
let language = config
.language
.clone()
.or_else(|| detection.language.clone())
.unwrap_or_else(|| "unknown".to_string());
let project = config
.project
.clone()
.or_else(|| detection.name.clone())
.unwrap_or_else(|| "project".to_string());
let steps = if config.steps.is_empty() {
crate::plugins::for_language(&language)
.map(|p| p.default_steps())
.unwrap_or_default()
} else {
config.steps.clone()
};
Pipeline {
project,
language,
steps,
}
}
}