diff options
author | John Gardner <gardnerjohng@gmail.com> | 2020-06-11 13:00:29 +1000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-06-10 23:00:29 -0400 |
commit | ca5b5ba530eccd1a4ed34bc475250daae489190a (patch) | |
tree | daf31cb89b47943707ca0590174a4fd4750f006c /cli/ops/runtime.rs | |
parent | a1b37f177be848ce3c3248b6b835f8999e36afff (diff) |
feat: Add Deno.mainModule (#6180)
Diffstat (limited to 'cli/ops/runtime.rs')
-rw-r--r-- | cli/ops/runtime.rs | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/cli/ops/runtime.rs b/cli/ops/runtime.rs index a85ce4011..e47b40792 100644 --- a/cli/ops/runtime.rs +++ b/cli/ops/runtime.rs @@ -6,11 +6,13 @@ use crate::state::State; use crate::version; use crate::DenoSubcommand; use deno_core::CoreIsolate; +use deno_core::ModuleSpecifier; use deno_core::ZeroCopyBuf; use std::env; pub fn init(i: &mut CoreIsolate, s: &State) { i.register_op("op_start", s.stateful_json_op(op_start)); + i.register_op("op_main_module", s.stateful_json_op(op_main_module)); i.register_op("op_metrics", s.stateful_json_op(op_metrics)); } @@ -39,6 +41,21 @@ fn op_start( }))) } +fn op_main_module( + state: &State, + _args: Value, + _zero_copy: &mut [ZeroCopyBuf], +) -> Result<JsonOp, OpError> { + let main = &state.borrow().main_module.to_string(); + let main_url = ModuleSpecifier::resolve_url_or_path(&main)?; + if main_url.as_url().scheme() == "file" { + let main_path = std::env::current_dir().unwrap().join(main_url.to_string()); + state.check_read_blind(&main_path, "main_module")?; + } + state.check_unstable("Deno.mainModule"); + Ok(JsonOp::Sync(json!(&main))) +} + fn op_metrics( state: &State, _args: Value, |