diff options
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, |