flowey_lib_hvlite/_jobs/
all_good_job.rs1use flowey::node::prelude::*;
13
14flowey_request! {
15 pub struct Params {
16 pub did_fail_env_var: String,
17 pub done: WriteVar<SideEffect>,
18 }
19}
20
21new_simple_flow_node!(struct Node);
22
23impl SimpleFlowNode for Node {
24 type Request = Params;
25
26 fn imports(ctx: &mut ImportCtx<'_>) {
27 ctx.import::<crate::git_checkout_openvmm_repo::Node>();
28 ctx.import::<flowey_lib_common::install_rust::Node>();
29 }
30
31 fn process_request(request: Self::Request, ctx: &mut NodeCtx<'_>) -> anyhow::Result<()> {
32 let Params {
33 did_fail_env_var,
34 done,
35 } = request;
36
37 ctx.emit_rust_step("Check if any jobs failed", |ctx| {
38 done.claim(ctx);
39 |_rt| {
40 let did_fail = std::env::var(did_fail_env_var)?
41 .to_lowercase()
42 .parse::<bool>()?;
43 if did_fail {
44 anyhow::bail!("Detected failures in one or more previous jobs!")
45 }
46 Ok(())
47 }
48 });
49
50 Ok(())
51 }
52}