flowey_lib_common/
ado_task_use_dotnet.rs1use flowey::node::prelude::*;
7
8flowey_request! {
9 pub struct Request {
10 pub version: String,
11 pub 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
22 fn emit(requests: Vec<Self::Request>, ctx: &mut NodeCtx<'_>) -> anyhow::Result<()> {
23 let mut done = Vec::new();
24 let mut version = None;
25
26 for req in requests {
27 same_across_all_reqs("version", &mut version, req.version)?;
28 done.push(req.done);
29 }
30
31 if done.is_empty() {
32 return Ok(());
33 }
34
35 let version = version.ok_or(anyhow::anyhow!("Missing essential request: version"))?;
36
37 let ado_version = if version.matches('.').count() < 2 {
40 format!("{version}.x")
41 } else {
42 version
43 };
44
45 ctx.emit_ado_step("Install .NET SDK", move |ctx| {
46 done.claim(ctx);
47 move |_| {
48 format!(
49 r#"
50 - task: UseDotNet@2
51 inputs:
52 packageType: sdk
53 version: '{ado_version}'
54 "#
55 )
56 }
57 });
58
59 Ok(())
60 }
61}