summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/msg.fbs12
-rw-r--r--src/ops.rs28
2 files changed, 39 insertions, 1 deletions
diff --git a/src/msg.fbs b/src/msg.fbs
index 0bbc18b1d..d7e71ab14 100644
--- a/src/msg.fbs
+++ b/src/msg.fbs
@@ -61,7 +61,9 @@ union Any {
RunStatus,
RunStatusRes,
Now,
- NowRes
+ NowRes,
+ IsTTY,
+ IsTTYRes
}
enum ErrorKind: byte {
@@ -483,4 +485,12 @@ table NowRes {
time: uint64;
}
+table IsTTY {}
+
+table IsTTYRes {
+ stdin: bool;
+ stdout: bool;
+ stderr: bool;
+}
+
root_type Base;
diff --git a/src/ops.rs b/src/ops.rs
index b17db87b2..b30473eb6 100644
--- a/src/ops.rs
+++ b/src/ops.rs
@@ -1,4 +1,5 @@
// Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
+
use crate::errors;
use crate::errors::{DenoError, DenoResult, ErrorKind};
use crate::fs as deno_fs;
@@ -18,6 +19,7 @@ use crate::resources::Resource;
use crate::tokio_util;
use crate::version;
+use atty;
use flatbuffers::FlatBufferBuilder;
use futures;
use futures::Async;
@@ -121,6 +123,7 @@ pub fn dispatch(
msg::Any::Write => op_write,
msg::Any::WriteFile => op_write_file,
msg::Any::Now => op_now,
+ msg::Any::IsTTY => op_is_tty,
_ => panic!(format!(
"Unhandled message {}",
msg::enum_name_any(inner_type)
@@ -197,6 +200,31 @@ fn op_now(
))
}
+fn op_is_tty(
+ _state: &Arc<IsolateState>,
+ base: &msg::Base<'_>,
+ _data: libdeno::deno_buf,
+) -> Box<Op> {
+ let builder = &mut FlatBufferBuilder::new();
+ let inner = msg::IsTTYRes::create(
+ builder,
+ &msg::IsTTYResArgs {
+ stdin: atty::is(atty::Stream::Stdin),
+ stdout: atty::is(atty::Stream::Stdout),
+ stderr: atty::is(atty::Stream::Stderr),
+ },
+ );
+ ok_future(serialize_response(
+ base.cmd_id(),
+ builder,
+ msg::BaseArgs {
+ inner: Some(inner.as_union_value()),
+ inner_type: msg::Any::IsTTYRes,
+ ..Default::default()
+ },
+ ))
+}
+
fn op_exit(
_config: &Arc<IsolateState>,
base: &msg::Base<'_>,