summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/examples/fs_module_loader.rs36
1 files changed, 36 insertions, 0 deletions
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<String> = std::env::args().collect();
+ if args.len() < 2 {
+ println!("Usage: target/examples/debug/fs_module_loader <path_to_module>");
+ 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)
+}