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