xtask: Add AllCi functionality: Run all xtask

This commit is contained in:
Henrik Tjäder 2025-06-08 13:46:46 +02:00 committed by Emil Fresk
parent 0cf2efdd2c
commit c27c251542

View file

@ -3,12 +3,12 @@ mod build;
mod cargo_command;
mod run;
use argument_parsing::ExtraArguments;
use argument_parsing::{ExtraArguments, FormatOpt, PackageOpt};
use clap::Parser;
use core::fmt;
use std::{path::Path, str};
use log::{error, info, log_enabled, trace, Level};
use log::{error, log_enabled, trace, Level};
use crate::{
argument_parsing::{BuildOrCheck, Cli, Commands, Platforms},
@ -176,10 +176,119 @@ fn main() -> anyhow::Result<()> {
Some("--quiet")
};
let formatoptcheckonly = FormatOpt {
// Only check, do not reformat
check: true,
..Default::default()
};
// Default set of all packages
// CI always runs on all packages
let package = PackageOpt::default();
let final_run_results = match &cli.command {
Commands::AllCi => {}
Commands::Format(args) => cargo_format(globals, &cargologlevel, &args.package, args.check),
Commands::Clippy(args) => cargo_clippy(globals, &cargologlevel, args, backend),
Commands::AllCi(args) => {
// TODO: Reduce code duplication and repetition
let mut results = cargo_format(globals, &cargologlevel, &formatoptcheckonly);
if args.failearly {
return handle_results(globals, results)
.map_err(|_| anyhow::anyhow!("Commands failed"));
}
results.append(&mut cargo_clippy(
globals,
&cargologlevel,
&package,
backend,
));
if args.failearly {
return handle_results(globals, results)
.map_err(|_| anyhow::anyhow!("Commands failed"));
}
results.append(&mut cargo(
globals,
BuildOrCheck::Check,
&cargologlevel,
&package,
backend,
));
if args.failearly {
return handle_results(globals, results)
.map_err(|_| anyhow::anyhow!("Commands failed"));
}
results.append(&mut cargo(
globals,
BuildOrCheck::Build,
&cargologlevel,
&package,
backend,
));
if args.failearly {
return handle_results(globals, results)
.map_err(|_| anyhow::anyhow!("Commands failed"));
}
results.append(&mut cargo_example(
globals,
BuildOrCheck::Check,
&cargologlevel,
platform,
backend,
&examples_to_run,
));
if args.failearly {
return handle_results(globals, results)
.map_err(|_| anyhow::anyhow!("Commands failed"));
}
results.append(&mut cargo_example(
globals,
BuildOrCheck::Build,
&cargologlevel,
platform,
backend,
&examples_to_run,
));
if args.failearly {
return handle_results(globals, results)
.map_err(|_| anyhow::anyhow!("Commands failed"));
}
results.append(&mut qemu_run_examples(
globals,
&cargologlevel,
platform,
backend,
&examples_to_run,
false,
));
if args.failearly {
return handle_results(globals, results)
.map_err(|_| anyhow::anyhow!("Commands failed"));
}
results.append(&mut cargo_doc(globals, &cargologlevel, backend, &None));
if args.failearly {
return handle_results(globals, results)
.map_err(|_| anyhow::anyhow!("Commands failed"));
}
results.append(&mut cargo_test(globals, &package, backend));
if args.failearly {
return handle_results(globals, results)
.map_err(|_| anyhow::anyhow!("Commands failed"));
}
results.append(&mut cargo_book(globals, &None));
if args.failearly {
return handle_results(globals, results)
.map_err(|_| anyhow::anyhow!("Commands failed"));
}
results
}
Commands::Format(formatopts) => cargo_format(globals, &cargologlevel, formatopts),
Commands::Clippy(packageopts) => {
cargo_clippy(globals, &cargologlevel, packageopts, backend)
}
Commands::Check(args) => cargo(globals, BuildOrCheck::Check, &cargologlevel, args, backend),
Commands::Build(args) => cargo(globals, BuildOrCheck::Build, &cargologlevel, args, backend),
Commands::ExampleCheck => cargo_example(