use crate::diagnostics::Reporter;
#[derive(Debug, clap::Args)]
pub(crate) struct Args {
layers: Vec<String>,
#[command(flatten)]
inputs: crate::layers::InputArgs,
}
pub(crate) fn run(args: &Args, reporter: &mut Reporter) -> bool {
if let Some(path) = crate::value::argument(&args.layers) {
let Some(document) = crate::value::read(path, &args.inputs, reporter) else {
return false;
};
reporter.diagnostics(&document.sources, &document.evaluation.diagnostics);
return !document.evaluation.has_errors();
}
let Some(inputs) = crate::layers::inputs(&args.layers, &args.inputs, None, reporter) else {
return false;
};
let evaluation = crate::layers::evaluate(&inputs);
reporter.diagnostics(&inputs.sources, &evaluation.diagnostics);
!evaluation.has_errors()
}