summaryrefslogtreecommitdiff
path: root/cli/main.rs
diff options
context:
space:
mode:
authorKevin (Kun) "Kassimo" Qian <kevinkassimo@gmail.com>2019-05-03 13:24:09 -0700
committerRyan Dahl <ry@tinyclouds.org>2019-05-03 16:24:09 -0400
commit36081171323e266760db8bed2f31a6e3be7d8839 (patch)
tree6f4dc276656c7b119fc5efad5368e847f9cf7f19 /cli/main.rs
parent401a5c021141d4ba5a71078b28f6daefcd1826a6 (diff)
feat(cli cmd): deno xeval (#2260)
Diffstat (limited to 'cli/main.rs')
-rw-r--r--cli/main.rs26
1 files changed, 26 insertions, 0 deletions
diff --git a/cli/main.rs b/cli/main.rs
index cff42f5a0..5a6efa073 100644
--- a/cli/main.rs
+++ b/cli/main.rs
@@ -208,6 +208,31 @@ fn eval_command(flags: DenoFlags, argv: Vec<String>) {
tokio_util::run(main_future);
}
+fn xeval_command(flags: DenoFlags, argv: Vec<String>) {
+ let xeval_replvar = flags.xeval_replvar.clone().unwrap();
+ let (mut worker, state) = create_worker_and_state(flags, argv);
+ let xeval_source = format!(
+ "window._xevalWrapper = async function ({}){{
+ {}
+ }}",
+ &xeval_replvar, &state.argv[1]
+ );
+
+ let main_future = lazy(move || {
+ // Setup runtime.
+ js_check(worker.execute(&xeval_source));
+ js_check(worker.execute("denoMain()"));
+ worker
+ .then(|result| {
+ js_check(result);
+ Ok(())
+ }).map_err(|(err, _worker): (RustOrJsError, Worker)| {
+ print_err_and_exit(err)
+ })
+ });
+ tokio_util::run(main_future);
+}
+
fn run_repl(flags: DenoFlags, argv: Vec<String>) {
let (mut worker, _state) = create_worker_and_state(flags, argv);
@@ -275,5 +300,6 @@ fn main() {
DenoSubcommand::Repl => run_repl(flags, argv),
DenoSubcommand::Run => run_script(flags, argv),
DenoSubcommand::Types => types_command(),
+ DenoSubcommand::Xeval => xeval_command(flags, argv),
}
}