Expand description
#FS Module
async function test() {
let fs_mod = await import('greco://fs');
await fs_mod.write('./test.txt', 'hello from greco fs');
}
§example
use quickjs_runtime::builder::QuickJsRuntimeBuilder;
use futures::executor::block_on;
use quickjs_runtime::jsutils::Script;
use quickjs_runtime::values::JsValueFacade;
let rtb = QuickJsRuntimeBuilder::new();
let rtb = green_copper_runtime::init_greco_rt(rtb);
let rt = rtb.build();
rt.eval_sync(None, Script::new("init_fs.es", "async function test_write() {\
let fs_mod = await import('greco://fs');\
await fs_mod.write('./test.txt', 'hello from greco fs');
}\n")).expect("script failed");
let prom_jsvf = rt.invoke_function_sync(None, &[], "test_write", vec![]).ok().expect("write function invocation failed");
// wait for promise to be done
if let JsValueFacade::JsPromise { cached_promise } = prom_jsvf {
let done = block_on(cached_promise.get_promise_result());
assert!(done.is_ok());
} else {
panic!("not a promise");
}
// do read test
let eval_fut = rt.eval(None, Script::new("init_fs.es", "async function test_read() {\
let fs_mod = await import('greco://fs');\
return await fs_mod.readString('./test.txt');
}\n"));
let _ = block_on(eval_fut);
let prom_jsvf = rt.invoke_function_sync(None, &[], "test_read", vec![]).ok().expect("read invocation failed");
// wait for promise to be done
if let JsValueFacade::JsPromise { cached_promise } = prom_jsvf {
let done = block_on(cached_promise.get_promise_result()).ok().expect("prom failed");
match done {
Ok(done_jsvf) => {
let s = done_jsvf.stringify();
assert_eq!(s, "String: hello from greco fs");
}
Err(val) => {
panic!("promise was rejected: {}", val.stringify());
}
}
} else {
panic!("not promise")
}
§Methods
##append ##copy ##createSymlink ##createDirs ##getMetadata ##getSymlinkMetadata ##list ##readString ##removeDir ##removeFile ##rename ##touch ##write