aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--xtask/src/main.rs119
1 files changed, 114 insertions, 5 deletions
diff --git a/xtask/src/main.rs b/xtask/src/main.rs
index 94cc2f2..7182b49 100644
--- a/xtask/src/main.rs
+++ b/xtask/src/main.rs
@@ -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(