Skip to content

Commit 40c6405

Browse files
authored
fix: use open_ambient_dir instead of fs::File::open to load folders (#136)
1 parent 5631fb4 commit 40c6405

File tree

3 files changed

+10
-13
lines changed

3 files changed

+10
-13
lines changed

crates/runtimes/src/modules/external.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ use std::{
77
fs,
88
path::{Path, PathBuf},
99
};
10-
use wasmtime_wasi::{Dir, WasiCtxBuilder};
10+
use wasmtime_wasi::{ambient_authority, Dir, WasiCtxBuilder};
1111
use wws_runtimes_manager::metadata::Runtime as RuntimeMetadata;
1212
use wws_store::Store;
1313

@@ -90,10 +90,10 @@ impl Runtime for ExternalRuntime {
9090
/// Mount the source code in the WASI context so it can be
9191
/// processed by the engine
9292
fn prepare_wasi_ctx(&self, builder: WasiCtxBuilder) -> Result<WasiCtxBuilder> {
93-
let source = fs::File::open(&self.store.folder)?;
93+
let dir = Dir::open_ambient_dir(&self.store.folder, ambient_authority())?;
9494

9595
Ok(builder
96-
.preopened_dir(Dir::from_std_file(source), "/src")?
96+
.preopened_dir(dir, "/src")?
9797
.args(&self.metadata.args)?)
9898
}
9999

crates/runtimes/src/modules/javascript.rs

Lines changed: 4 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -3,10 +3,8 @@
33

44
use crate::runtime::Runtime;
55
use anyhow::Result;
6-
use std::path::Path;
7-
use std::{fs, path::PathBuf};
8-
use wasmtime_wasi::Dir;
9-
use wasmtime_wasi::WasiCtxBuilder;
6+
use std::path::{Path, PathBuf};
7+
use wasmtime_wasi::{ambient_authority, Dir, WasiCtxBuilder};
108
use wws_store::Store;
119

1210
static JS_ENGINE_WASM: &[u8] =
@@ -48,8 +46,8 @@ impl Runtime for JavaScriptRuntime {
4846
/// Mount the source code in the WASI context so it can be
4947
/// processed by the engine
5048
fn prepare_wasi_ctx(&self, builder: WasiCtxBuilder) -> Result<WasiCtxBuilder> {
51-
let source = fs::File::open(&self.store.folder)?;
52-
Ok(builder.preopened_dir(Dir::from_std_file(source), "/src")?)
49+
let dir = Dir::open_ambient_dir(&self.store.folder, ambient_authority())?;
50+
Ok(builder.preopened_dir(dir, "/src")?)
5351
}
5452

5553
/// Returns a reference to the Wasm module that should

crates/worker/src/lib.rs

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ use std::path::PathBuf;
1414
use std::{collections::HashMap, path::Path};
1515
use stdio::Stdio;
1616
use wasmtime::{Engine, Linker, Module, Store};
17-
use wasmtime_wasi::{Dir, WasiCtxBuilder};
17+
use wasmtime_wasi::{ambient_authority, Dir, WasiCtxBuilder};
1818
use wws_config::Config as ProjectConfig;
1919
use wws_runtimes::{init_runtime, Runtime};
2020

@@ -106,9 +106,8 @@ impl Worker {
106106
if let Some(folders) = self.config.folders.as_ref() {
107107
for folder in folders {
108108
if let Some(base) = &self.path.parent() {
109-
let source = fs::File::open(base.join(&folder.from))?;
110-
wasi_builder =
111-
wasi_builder.preopened_dir(Dir::from_std_file(source), &folder.to)?;
109+
let dir = Dir::open_ambient_dir(base.join(&folder.from), ambient_authority())?;
110+
wasi_builder = wasi_builder.preopened_dir(dir, &folder.to)?;
112111
} else {
113112
// TODO: Revisit error management on #73
114113
return Err(anyhow!("The worker couldn't be initialized"));

0 commit comments

Comments
 (0)