flowey_hvlite/pipelines/
mod.rs1use cca_tests::CcaTestsCli;
5use flowey::pipeline::prelude::*;
6use restore_packages::RestorePackagesCli;
7use vmm_tests_run::VmmTestsRunCli;
8
9pub mod build_docs;
10pub mod build_igvm;
11pub mod build_reproducible;
12pub mod cca_tests;
13pub mod checkin_gates;
14pub mod custom_vmfirmwareigvm_dll;
15pub mod restore_packages;
16pub mod vmm_tests_run;
17
18#[derive(clap::Subcommand)]
19#[expect(clippy::large_enum_variant)]
20pub enum OpenvmmPipelines {
21 Regen {
24 #[arg(trailing_var_arg = true, allow_hyphen_values = true, hide = true)]
25 args: Vec<String>,
26 },
27
28 BuildIgvm(build_igvm::BuildIgvmCli),
29 BuildReproducible(build_reproducible::BuildReproducibleCli),
30 CustomVmfirmwareigvmDll(custom_vmfirmwareigvm_dll::CustomVmfirmwareigvmDllCli),
31
32 #[clap(subcommand)]
34 Ci(OpenvmmPipelinesCi),
35
36 RestorePackages(RestorePackagesCli),
38
39 VmmTestsRun(VmmTestsRunCli),
41
42 CcaTests(CcaTestsCli),
44}
45
46#[derive(clap::Subcommand)]
47pub enum OpenvmmPipelinesCi {
48 CheckinGates(checkin_gates::CheckinGatesCli),
49 BuildDocs(build_docs::BuildDocsCli),
50}
51
52impl IntoPipeline for OpenvmmPipelines {
53 fn into_pipeline(self, pipeline_hint: PipelineBackendHint) -> anyhow::Result<Pipeline> {
54 match self {
55 OpenvmmPipelines::Regen { args } => {
56 let status = std::process::Command::new("cargo")
57 .args(["run", "-p", "flowey_hvlite", "--", "regen"])
58 .args(args)
59 .spawn()?
60 .wait()?;
61 std::process::exit(status.code().unwrap_or(-1));
62 }
63 OpenvmmPipelines::BuildIgvm(cmd) => cmd.into_pipeline(pipeline_hint),
64 OpenvmmPipelines::BuildReproducible(cmd) => cmd.into_pipeline(pipeline_hint),
65 OpenvmmPipelines::CustomVmfirmwareigvmDll(cmd) => cmd.into_pipeline(pipeline_hint),
66 OpenvmmPipelines::Ci(cmd) => match cmd {
67 OpenvmmPipelinesCi::CheckinGates(cmd) => cmd.into_pipeline(pipeline_hint),
68 OpenvmmPipelinesCi::BuildDocs(cmd) => cmd.into_pipeline(pipeline_hint),
69 },
70 OpenvmmPipelines::RestorePackages(cmd) => cmd.into_pipeline(pipeline_hint),
71 OpenvmmPipelines::VmmTestsRun(cmd) => cmd.into_pipeline(pipeline_hint),
72 OpenvmmPipelines::CcaTests(cmd) => cmd.into_pipeline(pipeline_hint),
73 }
74 }
75}