green_copper_runtime::modules::io

Module fs

source
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

Structs§