diff options
Diffstat (limited to 'cli/ops/os.rs')
-rw-r--r-- | cli/ops/os.rs | 128 |
1 files changed, 34 insertions, 94 deletions
diff --git a/cli/ops/os.rs b/cli/ops/os.rs index 53ef63c60..afb87539f 100644 --- a/cli/ops/os.rs +++ b/cli/ops/os.rs @@ -1,15 +1,11 @@ // Copyright 2018-2019 the Deno authors. All rights reserved. MIT license. -use super::dispatch_flatbuffers::serialize_response; use super::dispatch_json::{Deserialize, JsonOp, Value}; -use super::utils::*; use crate::ansi; use crate::fs as deno_fs; -use crate::msg; use crate::state::ThreadSafeState; use crate::version; use atty; use deno::*; -use flatbuffers::FlatBufferBuilder; use log; use std::collections::HashMap; use std::env; @@ -17,97 +13,38 @@ use url::Url; pub fn op_start( state: &ThreadSafeState, - base: &msg::Base<'_>, - data: Option<PinnedBuf>, -) -> CliOpResult { - assert!(data.is_none()); - let mut builder = FlatBufferBuilder::new(); - - let state = state; - let argv = state.argv.iter().map(String::as_str).collect::<Vec<_>>(); - let argv_off = builder.create_vector_of_strings(argv.as_slice()); - - let cwd_path = env::current_dir().unwrap(); - let cwd_off = - builder.create_string(deno_fs::normalize_path(cwd_path.as_ref()).as_ref()); - - let v8_version = version::v8(); - let v8_version_off = builder.create_string(v8_version); - - let deno_version = version::DENO; - let deno_version_off = builder.create_string(deno_version); - - let main_module = state - .main_module() - .map(|m| builder.create_string(&m.to_string())); - - let xeval_delim = state - .flags - .xeval_delim - .clone() - .map(|m| builder.create_string(&m)); - - let debug_flag = state - .flags - .log_level - .map_or(false, |l| l == log::Level::Debug); - - let inner = msg::StartRes::create( - &mut builder, - &msg::StartResArgs { - cwd: Some(cwd_off), - pid: std::process::id(), - argv: Some(argv_off), - main_module, - debug_flag, - version_flag: state.flags.version, - v8_version: Some(v8_version_off), - deno_version: Some(deno_version_off), - no_color: !ansi::use_color(), - xeval_delim, - ..Default::default() - }, - ); - - ok_buf(serialize_response( - base.cmd_id(), - &mut builder, - msg::BaseArgs { - inner_type: msg::Any::StartRes, - inner: Some(inner.as_union_value()), - ..Default::default() - }, - )) + _args: Value, + _zero_copy: Option<PinnedBuf>, +) -> Result<JsonOp, ErrBox> { + Ok(JsonOp::Sync(json!({ + "cwd": deno_fs::normalize_path(&env::current_dir().unwrap()), + "pid": std::process::id(), + "argv": state.argv, + "mainModule": state.main_module().map(|x| x.as_str().to_string()), + "debugFlag": state + .flags + .log_level + .map_or(false, |l| l == log::Level::Debug), + "versionFlag": state.flags.version, + "v8Version": version::v8(), + "denoVersion": version::DENO, + "noColor": !ansi::use_color(), + "xevalDelim": state.flags.xeval_delim.clone(), + }))) } pub fn op_home_dir( state: &ThreadSafeState, - base: &msg::Base<'_>, - data: Option<PinnedBuf>, -) -> CliOpResult { - assert!(data.is_none()); - let cmd_id = base.cmd_id(); - + _args: Value, + _zero_copy: Option<PinnedBuf>, +) -> Result<JsonOp, ErrBox> { state.check_env()?; - - let builder = &mut FlatBufferBuilder::new(); let path = dirs::home_dir() .unwrap_or_default() .into_os_string() .into_string() .unwrap_or_default(); - let path = Some(builder.create_string(&path)); - let inner = msg::HomeDirRes::create(builder, &msg::HomeDirResArgs { path }); - - ok_buf(serialize_response( - cmd_id, - builder, - msg::BaseArgs { - inner: Some(inner.as_union_value()), - inner_type: msg::Any::HomeDirRes, - ..Default::default() - }, - )) + Ok(JsonOp::Sync(json!(path))) } pub fn op_exec_path( @@ -124,18 +61,21 @@ pub fn op_exec_path( Ok(JsonOp::Sync(json!(path))) } +#[derive(Deserialize)] +struct SetEnv { + key: String, + value: String, +} + pub fn op_set_env( state: &ThreadSafeState, - base: &msg::Base<'_>, - data: Option<PinnedBuf>, -) -> CliOpResult { - assert!(data.is_none()); - let inner = base.inner_as_set_env().unwrap(); - let key = inner.key().unwrap(); - let value = inner.value().unwrap(); + args: Value, + _zero_copy: Option<PinnedBuf>, +) -> Result<JsonOp, ErrBox> { + let args: SetEnv = serde_json::from_value(args)?; state.check_env()?; - env::set_var(key, value); - ok_buf(empty_buf()) + env::set_var(args.key, args.value); + Ok(JsonOp::Sync(json!({}))) } pub fn op_env( |