flowey_lib_hvlite/
init_openvmm_cargo_config_deny_warnings.rs

1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4//! Tweak `.cargo/config.toml` to deny warnings.
5
6use flowey::node::prelude::*;
7
8flowey_request! {
9    pub enum Request {
10        DenyWarnings(bool),
11        Done(WriteVar<SideEffect>),
12    }
13}
14
15new_flow_node!(struct Node);
16
17impl FlowNode for Node {
18    type Request = Request;
19
20    fn imports(ctx: &mut ImportCtx<'_>) {
21        ctx.import::<crate::git_checkout_openvmm_repo::Node>();
22    }
23
24    fn emit(requests: Vec<Self::Request>, ctx: &mut NodeCtx<'_>) -> anyhow::Result<()> {
25        let mut done = Vec::new();
26        let mut deny_warnings = None;
27
28        for req in requests {
29            match req {
30                Request::Done(v) => done.push(v),
31                Request::DenyWarnings(v) => {
32                    same_across_all_reqs("DenyWarnings", &mut deny_warnings, v)?
33                }
34            }
35        }
36
37        let deny_warnings =
38            deny_warnings.ok_or(anyhow::anyhow!("Missing essential request: DenyWarnings"))?;
39
40        // -- end of req processing -- //
41
42        if done.is_empty() {
43            return Ok(());
44        }
45
46        if !deny_warnings {
47            ctx.emit_side_effect_step([], done);
48            return Ok(());
49        }
50
51        let openvmm_repo_path = ctx.reqv(crate::git_checkout_openvmm_repo::req::GetRepoDir);
52
53        ctx.emit_rust_step("set '-Dwarnings' in .cargo/config.toml", move |ctx| {
54            done.claim(ctx);
55            let openvmm_repo_path = openvmm_repo_path.claim(ctx);
56            move |rt| {
57                let path = rt.read(openvmm_repo_path).join(".cargo/config.toml");
58                let data = fs_err::read_to_string(&path)?;
59                let data = data.replace("### ENABLE_IN_CI", "");
60                fs_err::write(path, data)?;
61                Ok(())
62            }
63        });
64
65        Ok(())
66    }
67}