summaryrefslogtreecommitdiff
path: root/cli/ops/runtime.rs
diff options
context:
space:
mode:
authorJohn Gardner <gardnerjohng@gmail.com>2020-06-11 13:00:29 +1000
committerGitHub <noreply@github.com>2020-06-10 23:00:29 -0400
commitca5b5ba530eccd1a4ed34bc475250daae489190a (patch)
treedaf31cb89b47943707ca0590174a4fd4750f006c /cli/ops/runtime.rs
parenta1b37f177be848ce3c3248b6b835f8999e36afff (diff)
feat: Add Deno.mainModule (#6180)
Diffstat (limited to 'cli/ops/runtime.rs')
-rw-r--r--cli/ops/runtime.rs17
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,