xpepermint opened issue #4925:
I'd kindly ask the community to provide an example of how to pass files and folders to
WasiCtx
based on the scaffold below:fn main() -> Result<()> { let engine = Engine::default(); let mut linker = Linker::new(&engine); wasmtime_wasi::add_to_linker(&mut linker, |s| s)?; let mut wasi = WasiCtxBuilder::new() .inherit_stdio() .inherit_stdout() .build(); wasi.insert_file(1, ...); // ??? wasi.insert_dir(2, ...); // ??? ... }
lann commented on issue #4925:
If you don't want to dig deep into the internals of how WASI works, the only "friendly-ish" interface is to attach an entire directory with https://docs.rs/wasmtime-wasi/0.39.1/wasmtime_wasi/sync/struct.WasiCtxBuilder.html#method.preopened_dir
This is adapted from working code but otherwise untested:
let host_dir = "/host/directory"; let guest_dir = "/guest/directory"; let dir = wasmtime_wasi::Dir::open_ambient_dir(host_dir, wasi_cap_std_sync::ambient_authority())?; let mut wasi = WasiCtxBuilder::new() // ... .preopened_dir(dir, guest_dir) .build();
xpepermint commented on issue #4925:
@lann this should work for now. Thank you.
xpepermint closed issue #4925:
I'd kindly ask the community to provide an example of how to pass files and folders to
WasiCtx
based on the scaffold below:fn main() -> Result<()> { let engine = Engine::default(); let mut linker = Linker::new(&engine); wasmtime_wasi::add_to_linker(&mut linker, |s| s)?; let mut wasi = WasiCtxBuilder::new() .inherit_stdio() .inherit_stdout() .build(); wasi.insert_file(1, ...); // ??? wasi.insert_dir(2, ...); // ??? ... }
Last updated: Dec 23 2024 at 12:05 UTC