diff options
Diffstat (limited to 'cli/ops/repl.rs')
-rw-r--r-- | cli/ops/repl.rs | 78 |
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() -} |