From cd03de3c7b8a99aeee3953e69392c26d3667c41d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bartek=20Iwa=C5=84czuk?= Date: Mon, 13 Dec 2021 13:14:04 +0100 Subject: example(core): add example for FS module loading (#13064) --- core/examples/fs_module_loader.rs | 36 ++++++++++++++++++++++++++++++++++++ 1 file changed, 36 insertions(+) create mode 100644 core/examples/fs_module_loader.rs (limited to 'core') diff --git a/core/examples/fs_module_loader.rs b/core/examples/fs_module_loader.rs new file mode 100644 index 000000000..d5fe2c5b8 --- /dev/null +++ b/core/examples/fs_module_loader.rs @@ -0,0 +1,36 @@ +// Copyright 2018-2021 the Deno authors. All rights reserved. MIT license. + +use deno_core::anyhow::Error; +use deno_core::FsModuleLoader; +use deno_core::JsRuntime; +use deno_core::RuntimeOptions; +use std::rc::Rc; + +fn main() -> Result<(), Error> { + let args: Vec = std::env::args().collect(); + if args.len() < 2 { + println!("Usage: target/examples/debug/fs_module_loader "); + std::process::exit(1); + } + let main_url = args[1].clone(); + println!("Run {}", main_url); + + let mut js_runtime = JsRuntime::new(RuntimeOptions { + module_loader: Some(Rc::new(FsModuleLoader)), + ..Default::default() + }); + + let runtime = tokio::runtime::Builder::new_current_thread() + .enable_all() + .build()?; + + let main_module = deno_core::resolve_path(&main_url)?; + + let future = async move { + let mod_id = js_runtime.load_main_module(&main_module, None).await?; + let _ = js_runtime.mod_evaluate(mod_id); + js_runtime.run_event_loop(false).await?; + Ok(()) + }; + runtime.block_on(future) +} -- cgit v1.2.3