Skip to content

Commit 0d7553e

Browse files
committed
Include component dependencies in OCI artifact
Signed-off-by: itowlson <[email protected]>
1 parent 2a9bf7c commit 0d7553e

File tree

2 files changed

+25
-0
lines changed

2 files changed

+25
-0
lines changed

crates/oci/src/client.rs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,24 @@ impl Client {
266266

267267
layers.push(layer);
268268

269+
let mut deps = BTreeMap::default();
270+
for (dep_name, mut dep) in c.dependencies {
271+
let source = dep
272+
.source
273+
.content
274+
.source
275+
.context("dependency loaded from disk should contain a file source")?;
276+
let source = parse_file_url(source.as_str())?;
277+
278+
let layer = Self::wasm_layer(&source).await?;
279+
280+
dep.source.content = self.content_ref_for_layer(&layer);
281+
deps.insert(dep_name, dep);
282+
283+
layers.push(layer);
284+
}
285+
c.dependencies = deps;
286+
269287
let mut files = Vec::new();
270288
for f in c.files {
271289
let source = f
@@ -292,6 +310,7 @@ impl Client {
292310
}
293311
}
294312
c.files = files;
313+
295314
components.push(c);
296315
}
297316
locked.components = components;

crates/oci/src/loader.rs

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,12 @@ impl OciLoader {
8282
let wasm_path = cache.wasm_file(wasm_digest)?;
8383
component.source.content = content_ref(wasm_path)?;
8484

85+
for dep in &mut component.dependencies.values_mut() {
86+
let dep_wasm_digest = content_digest(&dep.source.content)?;
87+
let dep_wasm_path = cache.wasm_file(dep_wasm_digest)?;
88+
dep.source.content = content_ref(dep_wasm_path)?;
89+
}
90+
8591
if !component.files.is_empty() {
8692
let mount_dir = self.working_dir.join("assets").join(&component.id);
8793
for file in &mut component.files {

0 commit comments

Comments
 (0)