summaryrefslogtreecommitdiff
path: root/cli/ops/repl.rs
diff options
context:
space:
mode:
Diffstat (limited to 'cli/ops/repl.rs')
-rw-r--r--cli/ops/repl.rs78
1 files changed, 0 insertions, 78 deletions
diff --git a/cli/ops/repl.rs b/cli/ops/repl.rs
deleted file mode 100644
index a2c26b2ab..000000000
--- a/cli/ops/repl.rs
+++ /dev/null
@@ -1,78 +0,0 @@
-// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license.
-
-use crate::repl;
-use crate::repl::Repl;
-use deno_core::error::bad_resource_id;
-use deno_core::error::AnyError;
-use deno_core::serde_json;
-use deno_core::serde_json::json;
-use deno_core::serde_json::Value;
-use deno_core::BufVec;
-use deno_core::OpState;
-use deno_core::ZeroCopyBuf;
-use serde::Deserialize;
-use std::cell::RefCell;
-use std::rc::Rc;
-use std::sync::Arc;
-use std::sync::Mutex;
-
-pub fn init(rt: &mut deno_core::JsRuntime) {
- super::reg_json_sync(rt, "op_repl_start", op_repl_start);
- super::reg_json_async(rt, "op_repl_readline", op_repl_readline);
-}
-
-struct ReplResource(Arc<Mutex<Repl>>);
-
-#[derive(Deserialize)]
-#[serde(rename_all = "camelCase")]
-struct ReplStartArgs {
- history_file: String,
-}
-
-fn op_repl_start(
- state: &mut OpState,
- args: Value,
- _zero_copy: &mut [ZeroCopyBuf],
-) -> Result<Value, AnyError> {
- let args: ReplStartArgs = serde_json::from_value(args)?;
- debug!("op_repl_start {}", args.history_file);
- let history_path = {
- let cli_state = super::global_state(state);
- repl::history_path(&cli_state.dir, &args.history_file)
- };
- let repl = repl::Repl::new(history_path);
- let resource = ReplResource(Arc::new(Mutex::new(repl)));
- let rid = state.resource_table.add("repl", Box::new(resource));
- Ok(json!(rid))
-}
-
-#[derive(Deserialize)]
-struct ReplReadlineArgs {
- rid: i32,
- prompt: String,
-}
-
-async fn op_repl_readline(
- state: Rc<RefCell<OpState>>,
- args: Value,
- _zero_copy: BufVec,
-) -> Result<Value, AnyError> {
- let args: ReplReadlineArgs = serde_json::from_value(args)?;
- let rid = args.rid as u32;
- let prompt = args.prompt;
- debug!("op_repl_readline {} {}", rid, prompt);
- let repl = {
- let state = state.borrow();
- let resource = state
- .resource_table
- .get::<ReplResource>(rid)
- .ok_or_else(bad_resource_id)?;
- resource.0.clone()
- };
- tokio::task::spawn_blocking(move || {
- let line = repl.lock().unwrap().readline(&prompt)?;
- Ok(json!(line))
- })
- .await
- .unwrap()
-}