conduit_cli/core/engine/workflow/loader/
download.rs1use crate::core::domain::source::Hash;
2use crate::core::engine::resolver::loader::ResolvedLoader;
3use crate::core::engine::workflow::Workflow;
4use crate::core::schemas::lock::HashKind;
5use crate::errors::ConduitResult;
6
7impl Workflow {
8 pub async fn download_loader(
9 &self,
10 resolved: &ResolvedLoader,
11 ) -> ConduitResult<(String, HashKind)> {
12 let mut hash_obj = Hash {
13 sha1: None,
14 sha256: None,
15 sha512: None,
16 };
17
18 if !resolved.hash.is_empty() {
19 if resolved.hash.len() == 64 {
20 hash_obj.sha256 = Some(resolved.hash.clone());
21 } else {
22 hash_obj.sha1 = Some(resolved.hash.clone());
23 }
24 }
25
26 let download_hash = if resolved.hash.is_empty() {
27 None
28 } else {
29 Some(&hash_obj)
30 };
31
32 self.ctx
33 .downloader
34 .download_to_store(&resolved.url, download_hash)
35 .await
36 }
37}