flowey_hvlite/pipelines/
restore_packages.rs1use crate::pipelines_shared::cfg_common_params::CommonArchCli;
5use flowey::node::prelude::ReadVar;
6use flowey::pipeline::prelude::*;
7
8#[derive(clap::Args)]
10pub struct RestorePackagesCli {
11 arch: Vec<CommonArchCli>,
15}
16
17impl IntoPipeline for RestorePackagesCli {
18 fn into_pipeline(self, backend_hint: PipelineBackendHint) -> anyhow::Result<Pipeline> {
19 let openvmm_repo = flowey_lib_common::git_checkout::RepoSource::ExistingClone(
20 ReadVar::from_static(crate::repo_root()),
21 );
22
23 let mut pipeline = Pipeline::new();
24 let (pub_last_release_igvm_files, _) = pipeline.new_artifact("last-release-igvm-files");
25 let mut job = pipeline
26 .new_job(
27 FlowPlatform::host(backend_hint),
28 FlowArch::host(backend_hint),
29 "restore packages",
30 )
31 .dep_on(|_| flowey_lib_hvlite::_jobs::cfg_versions::Request {})
32 .dep_on(
33 |_| flowey_lib_hvlite::_jobs::cfg_hvlite_reposource::Params {
34 hvlite_repo_source: openvmm_repo,
35 },
36 )
37 .dep_on(|_| flowey_lib_hvlite::_jobs::cfg_common::Params {
38 local_only: Some(flowey_lib_hvlite::_jobs::cfg_common::LocalOnlyParams {
39 interactive: true,
40 auto_install: true,
41 force_nuget_mono: false,
42 external_nuget_auth: false,
43 ignore_rust_version: true,
44 }),
45 verbose: ReadVar::from_static(true),
46 locked: false,
47 deny_warnings: false,
48 });
49
50 let arches = {
51 if self.arch.is_empty() {
52 vec![FlowArch::host(backend_hint).try_into()?]
53 } else {
54 self.arch
55 }
56 };
57
58 let arches = arches.into_iter().map(|arch| arch.into()).collect();
59
60 job = job.dep_on(
61 |ctx| flowey_lib_hvlite::_jobs::local_restore_packages::Request {
62 arches,
63 done: ctx.new_done_handle(),
64 release_artifact: ctx.publish_artifact(pub_last_release_igvm_files),
65 },
66 );
67 job.finish();
68 Ok(pipeline)
69 }
70}