summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Sharshakov <sh7dm@outlook.com>2019-02-08 00:19:50 +0300
committerRyan Dahl <ry@tinyclouds.org>2019-02-07 16:19:50 -0500
commit5c50d2819b7b7f43820b0f2e572dff2fc0bb8c8b (patch)
tree67474cb213c5b82873bf28d42638038c97b23fe1
parentaea7884d11b6f10e2ccc0d6a7c5c154f84472ed4 (diff)
Add emojis to permission prompts (#1684)
-rw-r--r--BUILD.gn1
-rw-r--r--Cargo.lock10
-rw-r--r--Cargo.toml1
-rw-r--r--Docs.md2
-rw-r--r--build_extra/rust/BUILD.gn12
-rw-r--r--src/main.rs3
-rw-r--r--src/permissions.rs20
m---------third_party0
-rwxr-xr-xtools/permission_prompt_test.py17
9 files changed, 45 insertions, 21 deletions
diff --git a/BUILD.gn b/BUILD.gn
index 251fba2ee..07375aa4f 100644
--- a/BUILD.gn
+++ b/BUILD.gn
@@ -18,6 +18,7 @@ group("default") {
}
main_extern = [
+ "$rust_build:ansi_term",
"$rust_build:atty",
"$rust_build:dirs",
"$rust_build:flatbuffers",
diff --git a/Cargo.lock b/Cargo.lock
index a0ffaa3aa..134ca4387 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -1,4 +1,12 @@
[[package]]
+name = "ansi_term"
+version = "0.11.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+dependencies = [
+ "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)",
+]
+
+[[package]]
name = "arc-swap"
version = "0.3.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -184,6 +192,7 @@ dependencies = [
name = "deno"
version = "0.2.10"
dependencies = [
+ "ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)",
"atty 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)",
"dirs 1.0.4 (registry+https://github.com/rust-lang/crates.io-index)",
"flatbuffers 0.5.0 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1310,6 +1319,7 @@ dependencies = [
]
[metadata]
+"checksum ansi_term 0.11.0 (registry+https://github.com/rust-lang/crates.io-index)" = "ee49baf6cb617b853aa8d93bf420db2383fab46d314482ca2803b40d5fde979b"
"checksum arc-swap 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)" = "1025aeae2b664ca0ea726a89d574fe8f4e77dd712d443236ad1de00379450cf6"
"checksum argon2rs 0.2.5 (registry+https://github.com/rust-lang/crates.io-index)" = "3f67b0b6a86dae6e67ff4ca2b6201396074996379fba2b92ff649126f37cb392"
"checksum arrayvec 0.4.10 (registry+https://github.com/rust-lang/crates.io-index)" = "92c7fb76bc8826a8b33b4ee5bb07a247a81e76764ab4d55e8f73e3a4d8808c71"
diff --git a/Cargo.toml b/Cargo.toml
index 7aeff89fb..652a0d988 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -10,6 +10,7 @@ version = "0.2.10"
edition = "2018"
[dependencies]
+ansi_term = "0.11.0"
atty = "0.2.11"
dirs = "1.0.4"
flatbuffers = "0.5.0"
diff --git a/Docs.md b/Docs.md
index 6de796def..ec910fec8 100644
--- a/Docs.md
+++ b/Docs.md
@@ -200,7 +200,7 @@ the network:
```
> deno https://deno.land/x/examples/echo_server.ts
-deno requests network access to "listen". Grant? [yN] y
+⚠️ Deno requests network access to "listen". Grant? [yN] y
listening on 0.0.0.0:8080
```
diff --git a/build_extra/rust/BUILD.gn b/build_extra/rust/BUILD.gn
index 09a32d849..ca136ed78 100644
--- a/build_extra/rust/BUILD.gn
+++ b/build_extra/rust/BUILD.gn
@@ -10,6 +10,18 @@ import("rust.gni")
cargo_home = "//third_party/rust_crates"
+rust_crate("ansi_term") {
+ edition = "2015"
+ source_root = "$cargo_home/registry/src/github.com-1ecc6299db9ec823/ansi_term-0.11.0/src/lib.rs"
+ args = [
+ "--cap-lints",
+ "allow",
+ ]
+ if (is_win) {
+ extern = [ ":winapi" ]
+ }
+}
+
rust_crate("arrayvec") {
edition = "2015"
source_root = "$cargo_home/registry/src/github.com-1ecc6299db9ec823/arrayvec-0.4.10/src/lib.rs"
diff --git a/src/main.rs b/src/main.rs
index 36a39dbf0..175464e31 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -61,6 +61,9 @@ fn print_err_and_exit(err: errors::RustOrJsError) {
}
fn main() {
+ #[cfg(windows)]
+ ansi_term::enable_ansi_support().ok(); // For Windows 10
+
log::set_logger(&LOGGER).unwrap();
let args = env::args().collect();
let (mut flags, mut rest_argv, usage_string) = flags::set_flags(args)
diff --git a/src/permissions.rs b/src/permissions.rs
index fc14bea76..c05ea4ee5 100644
--- a/src/permissions.rs
+++ b/src/permissions.rs
@@ -3,6 +3,7 @@ use atty;
use crate::flags::DenoFlags;
+use ansi_term::Style;
use crate::errors::permission_denied;
use crate::errors::DenoResult;
use std::io;
@@ -32,7 +33,7 @@ impl DenoPermissions {
return Ok(());
};
// TODO get location (where access occurred)
- let r = permission_prompt("Deno requests access to run a subprocess.");
+ let r = permission_prompt("access to run a subprocess");
if r.is_ok() {
self.allow_run.store(true, Ordering::SeqCst);
}
@@ -44,10 +45,7 @@ impl DenoPermissions {
return Ok(());
};
// TODO get location (where access occurred)
- let r = permission_prompt(&format!(
- "Deno requests write access to \"{}\".",
- filename
- ));;
+ let r = permission_prompt(&format!("write access to \"{}\"", filename));;
if r.is_ok() {
self.allow_write.store(true, Ordering::SeqCst);
}
@@ -59,10 +57,8 @@ impl DenoPermissions {
return Ok(());
};
// TODO get location (where access occurred)
- let r = permission_prompt(&format!(
- "Deno requests network access to \"{}\".",
- domain_name
- ));
+ let r =
+ permission_prompt(&format!("network access to \"{}\"", domain_name));
if r.is_ok() {
self.allow_net.store(true, Ordering::SeqCst);
}
@@ -74,8 +70,7 @@ impl DenoPermissions {
return Ok(());
};
// TODO get location (where access occurred)
- let r =
- permission_prompt(&"Deno requests access to environment variables.");
+ let r = permission_prompt(&"access to environment variables");
if r.is_ok() {
self.allow_env.store(true, Ordering::SeqCst);
}
@@ -87,8 +82,9 @@ fn permission_prompt(message: &str) -> DenoResult<()> {
if !atty::is(atty::Stream::Stdin) || !atty::is(atty::Stream::Stderr) {
return Err(permission_denied());
};
+ let msg = format!("⚠️ Deno requests {}. Grant? [yN] ", message);
// print to stderr so that if deno is > to a file this is still displayed.
- eprint!("{} Grant? [yN] ", message);
+ eprint!("{}", Style::new().bold().paint(msg));
let mut input = String::new();
let stdin = io::stdin();
let _nread = stdin.read_line(&mut input)?;
diff --git a/third_party b/third_party
-Subproject c8e3a6e37ff575a6f41168235651f5ef684f198
+Subproject fc22ab76b59256a3cdbfd74776460bc40b6b24f
diff --git a/tools/permission_prompt_test.py b/tools/permission_prompt_test.py
index 5eae5beda..e2557e841 100755
--- a/tools/permission_prompt_test.py
+++ b/tools/permission_prompt_test.py
@@ -1,4 +1,5 @@
#!/usr/bin/env python
+# -*- coding: utf-8 -*-
# Copyright 2018-2019 the Deno authors. All rights reserved. MIT license.
import os
import pty
@@ -74,7 +75,7 @@ class Prompt(object):
code, stdout, stderr = self.run('needsWrite', b'y\n')
assert code == 0
assert stdout == b''
- assert b'Deno requests write access' in stderr
+ assert b'⚠️ Deno requests write access' in stderr
def test_write_arg(self):
code, stdout, stderr = self.run('needsWrite', b'', allow_write=True)
@@ -86,13 +87,13 @@ class Prompt(object):
code, _stdout, stderr = self.run('needsWrite', b'N\n')
assert code == 1
assert b'PermissionDenied: permission denied' in stderr
- assert b'Deno requests write access' in stderr
+ assert b'⚠️ Deno requests write access' in stderr
def test_env_yes(self):
code, stdout, stderr = self.run('needsEnv', b'y\n')
assert code == 0
assert stdout == b''
- assert b'Deno requests access to environment' in stderr
+ assert b'⚠️ Deno requests access to environment' in stderr
def test_env_arg(self):
code, stdout, stderr = self.run('needsEnv', b'', allow_env=True)
@@ -104,13 +105,13 @@ class Prompt(object):
code, _stdout, stderr = self.run('needsEnv', b'N\n')
assert code == 1
assert b'PermissionDenied: permission denied' in stderr
- assert b'Deno requests access to environment' in stderr
+ assert b'⚠️ Deno requests access to environment' in stderr
def test_net_yes(self):
code, stdout, stderr = self.run('needsEnv', b'y\n')
assert code == 0
assert stdout == b''
- assert b'Deno requests access to environment' in stderr
+ assert b'⚠️ Deno requests access to environment' in stderr
def test_net_arg(self):
code, stdout, stderr = self.run('needsNet', b'', allow_net=True)
@@ -122,13 +123,13 @@ class Prompt(object):
code, _stdout, stderr = self.run('needsNet', b'N\n')
assert code == 1
assert b'PermissionDenied: permission denied' in stderr
- assert b'Deno requests network access' in stderr
+ assert b'⚠️ Deno requests network access' in stderr
def test_run_yes(self):
code, stdout, stderr = self.run('needsRun', b'y\n')
assert code == 0
assert stdout == b'hello'
- assert b'Deno requests access to run' in stderr
+ assert b'⚠️ Deno requests access to run' in stderr
def test_run_arg(self):
code, stdout, stderr = self.run('needsRun', b'', allow_run=True)
@@ -140,7 +141,7 @@ class Prompt(object):
code, _stdout, stderr = self.run('needsRun', b'N\n')
assert code == 1
assert b'PermissionDenied: permission denied' in stderr
- assert b'Deno requests access to run' in stderr
+ assert b'⚠️ Deno requests access to run' in stderr
def permission_prompt_test(deno_exe):