flowey_lib_hvlite/_jobs/
cfg_common.rs1use flowey::node::prelude::*;
9
10#[derive(Clone, Serialize, Deserialize)]
11pub struct LocalOnlyParams {
12 pub interactive: bool,
15 pub auto_install: bool,
17 pub force_nuget_mono: bool,
20 pub external_nuget_auth: bool,
24 pub ignore_rust_version: bool,
27}
28
29flowey_request! {
30 #[derive(Clone)]
31 pub struct Params {
32 pub local_only: Option<LocalOnlyParams>,
33 pub verbose: ReadVar<bool>,
34 pub locked: bool,
35 pub deny_warnings: bool,
36 }
37}
38
39new_simple_flow_node!(struct Node);
40
41impl SimpleFlowNode for Node {
42 type Request = Params;
43
44 fn imports(ctx: &mut ImportCtx<'_>) {
45 ctx.import::<crate::download_openhcl_kernel_package::Node>();
46 ctx.import::<crate::download_openvmm_deps::Node>();
47 ctx.import::<crate::download_uefi_mu_msvm::Node>();
48 ctx.import::<crate::git_checkout_openvmm_repo::Node>();
49 ctx.import::<crate::init_openvmm_cargo_config_deny_warnings::Node>();
50 ctx.import::<crate::install_git_credential_manager::Node>();
51 ctx.import::<crate::install_openvmm_rust_build_essential::Node>();
52 ctx.import::<flowey_lib_common::cfg_cargo_common_flags::Node>();
53 ctx.import::<flowey_lib_common::download_azcopy::Node>();
54 ctx.import::<flowey_lib_common::download_cargo_nextest::Node>();
55 ctx.import::<flowey_lib_common::download_nuget_exe::Node>();
56 ctx.import::<flowey_lib_common::download_protoc::Node>();
57 ctx.import::<flowey_lib_common::git_checkout::Node>();
58 ctx.import::<flowey_lib_common::install_dist_pkg::Node>();
59 ctx.import::<flowey_lib_common::install_azure_cli::Node>();
60 ctx.import::<flowey_lib_common::install_git::Node>();
61 ctx.import::<flowey_lib_common::install_nodejs::Node>();
62 ctx.import::<flowey_lib_common::install_nuget_azure_credential_provider::Node>();
63 ctx.import::<flowey_lib_common::install_rust::Node>();
64 ctx.import::<flowey_lib_common::nuget_install_package::Node>();
65 ctx.import::<flowey_lib_common::run_cargo_nextest_run::Node>();
66 ctx.import::<flowey_lib_common::use_gh_cli::Node>();
67 }
68
69 fn process_request(request: Self::Request, ctx: &mut NodeCtx<'_>) -> anyhow::Result<()> {
70 let Params {
71 local_only,
72 verbose,
73 locked,
74 deny_warnings,
75 } = request;
76
77 if matches!(ctx.backend(), FlowBackend::Github) {
78 if local_only.is_some() {
79 anyhow::bail!("can only set `local_only` params when using Local backend");
80 }
81
82 ctx.req(flowey_lib_common::install_azure_cli::Request::AutoInstall(
83 true,
84 ));
85 ctx.req(flowey_lib_common::install_rust::Request::AutoInstall(true));
86 ctx.req(flowey_lib_common::install_rust::Request::IgnoreVersion(
87 false,
88 ));
89 let token = ctx.get_gh_context_var().global().token();
90 ctx.req(flowey_lib_common::use_gh_cli::Request::WithAuth(
91 flowey_lib_common::use_gh_cli::GhCliAuth::AuthToken(token),
92 ));
93 } else if matches!(ctx.backend(), FlowBackend::Ado) {
94 if local_only.is_some() {
95 anyhow::bail!("can only set `local_only` params when using Local backend");
96 }
97
98 ctx.req(flowey_lib_common::install_azure_cli::Request::AutoInstall(
99 true,
100 ));
101 } else if matches!(ctx.backend(), FlowBackend::Local) {
102 let local_only =
103 local_only.ok_or(anyhow::anyhow!("missing essential request: local_only"))?;
104
105 let LocalOnlyParams {
106 interactive,
107 auto_install,
108 force_nuget_mono,
109 external_nuget_auth,
110 ignore_rust_version,
111 } = local_only;
112
113 {
115 ctx.req(
116 flowey_lib_common::install_dist_pkg::Request::LocalOnlyInteractive(interactive),
117 );
118 ctx.req(
119 flowey_lib_common::nuget_install_package::Request::LocalOnlyInteractive(
120 interactive,
121 ),
122 );
123 ctx.req(
124 flowey_lib_common::nuget_install_package::Request::LocalOnlyInteractive(
125 interactive,
126 ),
127 );
128 ctx.req(flowey_lib_common::use_gh_cli::Request::WithAuth(
129 flowey_lib_common::use_gh_cli::GhCliAuth::LocalOnlyInteractive,
130 ));
131 ctx.req(flowey_lib_common::install_rust::Request::IgnoreVersion(
132 ignore_rust_version,
133 ));
134 }
135
136 {
138 ctx.req(flowey_lib_common::install_rust::Request::AutoInstall(
139 auto_install,
140 ));
141 ctx.req(
142 flowey_lib_common::install_nuget_azure_credential_provider::Request::LocalOnlyAutoInstall(
143 auto_install,
144 ),
145 );
146 ctx.req(
147 flowey_lib_common::install_dist_pkg::Request::LocalOnlySkipUpdate(
148 !auto_install,
149 ),
150 );
151 ctx.req(flowey_lib_common::install_nodejs::Request::AutoInstall(
152 auto_install,
153 ));
154 ctx.req(flowey_lib_common::install_azure_cli::Request::AutoInstall(
155 auto_install,
156 ));
157 ctx.req(
158 flowey_lib_common::install_git::Request::LocalOnlyAutoInstall(auto_install),
159 );
160 }
161
162 ctx.req(
166 flowey_lib_common::install_nuget_azure_credential_provider::Request::LocalOnlySkipAuthCheck(
167 external_nuget_auth,
168 ),
169 );
170
171 ctx.req(
172 flowey_lib_common::download_nuget_exe::Request::LocalOnlyForceWsl2MonoNugetExe(
173 force_nuget_mono,
174 ),
175 );
176
177 ctx.req(flowey_lib_common::git_checkout::Request::LocalOnlyRequireExistingClones(true));
181 } else {
182 anyhow::bail!("unsupported backend")
183 }
184
185 ctx.requests::<flowey_lib_common::cfg_cargo_common_flags::Node>([
186 flowey_lib_common::cfg_cargo_common_flags::Request::SetVerbose(verbose),
187 flowey_lib_common::cfg_cargo_common_flags::Request::SetLocked(locked),
188 ]);
189
190 ctx.req(
191 crate::init_openvmm_cargo_config_deny_warnings::Request::DenyWarnings(deny_warnings),
192 );
193
194 Ok(())
195 }
196}