Skip to main content

flowey_lib_hvlite/_jobs/
cfg_hvlite_reposource.rs

1// Copyright (c) Microsoft Corporation.
2// Licensed under the MIT License.
3
4//! Configures the repo source required by [`crate::git_checkout_openvmm_repo`]
5
6use flowey::node::prelude::*;
7
8flowey_request! {
9    #[derive(Clone)]
10    pub struct Params {
11        pub hvlite_repo_source: flowey_lib_common::git_checkout::RepoSource,
12    }
13}
14
15new_simple_flow_node!(struct Node);
16
17impl SimpleFlowNode for Node {
18    type Request = Params;
19
20    fn imports(ctx: &mut ImportCtx<'_>) {
21        ctx.import::<crate::git_checkout_openvmm_repo::Node>();
22        ctx.import::<flowey_lib_common::git_checkout::Node>();
23    }
24
25    fn process_request(request: Self::Request, ctx: &mut NodeCtx<'_>) -> anyhow::Result<()> {
26        let Params { hvlite_repo_source } = request;
27
28        if matches!(ctx.backend(), FlowBackend::Local) {
29            ctx.config(flowey_lib_common::git_checkout::Config {
30                require_local_clones: Some(!matches!(
31                    hvlite_repo_source,
32                    flowey_lib_common::git_checkout::RepoSource::LocalOnlyNewClone { .. }
33                )),
34            });
35        }
36
37        ctx.req(flowey_lib_common::git_checkout::Request::RegisterRepo {
38            repo_id: "openvmm".into(),
39            repo_src: hvlite_repo_source,
40            allow_persist_credentials: false,
41            depth: Some(1),           // shallow fetch
42            pre_run_deps: Vec::new(), // no special auth required
43        });
44
45        ctx.config(crate::git_checkout_openvmm_repo::Config {
46            repo_id: Some(ConfigVar(ReadVar::from_static("openvmm".into()))),
47        });
48
49        Ok(())
50    }
51}