github.com/wasilibs/wazerox@v0.0.0-20240124024944-4923be63ab5f/experimental/sysfs/sysfs.go (about) 1 // Package sysfs includes a low-level filesystem interface and utilities needed 2 // for WebAssembly host functions (ABI) such as WASI and runtime.GOOS=js. 3 // 4 // The name sysfs was chosen because wazero's public API has a "sys" package, 5 // which was named after https://github.com/golang/sys. 6 // 7 // This tracked in https://github.com/tetratelabs/wazero/issues/1013 8 package sysfs 9 10 import ( 11 experimentalsys "github.com/wasilibs/wazerox/experimental/sys" 12 "github.com/wasilibs/wazerox/internal/sysfs" 13 ) 14 15 // AdaptFS adapts the input to sys.FS. Use DirFS instead of adapting an 16 // os.DirFS as it handles interop issues such as windows support. 17 // 18 // Note: This performs no flag verification on OpenFile. sys.FS cannot read 19 // flags as there is no parameter to pass them through with. Moreover, sys.FS 20 // documentation does not require the file to be present. In summary, we can't 21 // enforce flag behavior. 22 type AdaptFS = sysfs.AdaptFS 23 24 // DirFS is like os.DirFS except it returns sys.FS, which has more features. 25 func DirFS(dir string) experimentalsys.FS { 26 return sysfs.DirFS(dir) 27 } 28 29 // ReadFS is used to mask an existing sys.FS for reads. Notably, this allows 30 // the CLI to do read-only mounts of directories the host user can write, but 31 // doesn't want the guest wasm to. For example, Python libraries shouldn't be 32 // written to at runtime by the python wasm file. 33 // 34 // Note: This implements read-only by returning sys.EROFS or sys.EBADF, 35 // depending on the operation that require write access. 36 type ReadFS = sysfs.ReadFS