diff options
author | Kitson Kelly <me@kitsonkelly.com> | 2019-04-29 15:58:31 +0100 |
---|---|---|
committer | Ryan Dahl <ry@tinyclouds.org> | 2019-04-29 07:58:31 -0700 |
commit | 1a0f53a807abad0e9ebfcf437f3dade6b01d7f84 (patch) | |
tree | 013eb8d15383a22a4e2c4c5502ba37035b397903 /cli/ops.rs | |
parent | 73be183864d0983821e683198d9a6ea9008f070a (diff) |
Add support for custom tsconfig.json (#2089)
Use `--config`
Diffstat (limited to 'cli/ops.rs')
-rw-r--r-- | cli/ops.rs | 38 |
1 files changed, 38 insertions, 0 deletions
diff --git a/cli/ops.rs b/cli/ops.rs index bc06a2fb7..4ebcf5fdb 100644 --- a/cli/ops.rs +++ b/cli/ops.rs @@ -1,6 +1,7 @@ // Copyright 2018-2019 the Deno authors. All rights reserved. MIT license. use atty; use crate::ansi; +use crate::compiler::get_compiler_config; use crate::errors; use crate::errors::{DenoError, DenoResult, ErrorKind}; use crate::fs as deno_fs; @@ -146,6 +147,8 @@ pub fn dispatch_all( pub fn op_selector_compiler(inner_type: msg::Any) -> Option<OpCreator> { match inner_type { + msg::Any::CompilerConfig => Some(op_compiler_config), + msg::Any::Cwd => Some(op_cwd), msg::Any::FetchModuleMetaData => Some(op_fetch_module_meta_data), msg::Any::WorkerGetMessage => Some(op_worker_get_message), msg::Any::WorkerPostMessage => Some(op_worker_post_message), @@ -443,6 +446,41 @@ fn op_fetch_module_meta_data( }())) } +/// Retrieve any relevant compiler configuration. +fn op_compiler_config( + state: &ThreadSafeState, + base: &msg::Base<'_>, + data: deno_buf, +) -> Box<OpWithError> { + assert_eq!(data.len(), 0); + let inner = base.inner_as_compiler_config().unwrap(); + let cmd_id = base.cmd_id(); + let compiler_type = inner.compiler_type().unwrap(); + + Box::new(futures::future::result(|| -> OpResult { + let builder = &mut FlatBufferBuilder::new(); + let (path, out) = match get_compiler_config(state, compiler_type) { + Some(val) => val, + _ => ("".to_owned(), "".as_bytes().to_owned()), + }; + let data_off = builder.create_vector(&out); + let msg_args = msg::CompilerConfigResArgs { + path: Some(builder.create_string(&path)), + data: Some(data_off), + }; + let inner = msg::CompilerConfigRes::create(builder, &msg_args); + Ok(serialize_response( + cmd_id, + builder, + msg::BaseArgs { + inner: Some(inner.as_union_value()), + inner_type: msg::Any::CompilerConfigRes, + ..Default::default() + }, + )) + }())) +} + fn op_chdir( _state: &ThreadSafeState, base: &msg::Base<'_>, |