use crate::diagnostics::ValidationReport;
use crate::model::PipelineContract;
use super::{
com, control_flow, data_flow, document, execution, extensions, failure, graph, lineage,
quality, references, scheduling, structural,
};
pub fn validate(contract: &PipelineContract) -> ValidationReport {
let mut report = ValidationReport::new();
report.extend(document::validate(contract));
report.extend(com::validate(contract));
report.extend(structural::validate(contract));
report.extend(graph::validate(contract));
report.extend(references::validate(contract));
report.extend(data_flow::validate(contract));
report.extend(control_flow::validate(contract));
report.extend(execution::validate(contract));
report.extend(scheduling::validate(contract));
report.extend(quality::validate(contract));
report.extend(failure::validate(contract));
report.extend(lineage::validate(contract));
report.extend(extensions::validate(contract));
report.sort_deterministic();
report
}