Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Remove asni term dependency #4116

Merged
merged 6 commits into from
Feb 25, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 0 additions & 1 deletion Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

1 change: 0 additions & 1 deletion cli/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -26,7 +26,6 @@ deno_typescript = { path = "../deno_typescript", version = "0.34.0" }
deno_core = { path = "../core", version = "0.34.0" }
deno_typescript = { path = "../deno_typescript", version = "0.34.0" }

ansi_term = "0.11.0"
atty = "0.2.13"
base64 = "0.11.0"
bytes = "0.5.3"
Expand Down
107 changes: 53 additions & 54 deletions cli/colors.rs
Original file line number Diff line number Diff line change
@@ -1,22 +1,23 @@
// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license.
use ansi_term::Color::Black;
use ansi_term::Color::Fixed;
use ansi_term::Color::Red;
use ansi_term::Color::White;
use ansi_term::Style;
use regex::Regex;
use std::env;
use std::fmt;
use std::io::Write;
use termcolor::Color::{Ansi256, Black, Red, White};
use termcolor::{Ansi, ColorSpec, WriteColor};

#[cfg(windows)]
use termcolor::{BufferWriter, ColorChoice};

lazy_static! {
// STRIP_ANSI_RE and strip_ansi_codes are lifted from the "console" crate.
// Copyright 2017 Armin Ronacher <[email protected]>. MIT License.
static ref STRIP_ANSI_RE: Regex = Regex::new(
r"[\x1b\x9b][\[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-PRZcf-nqry=><]"
).unwrap();
static ref NO_COLOR: bool = {
env::var_os("NO_COLOR").is_some()
};
// STRIP_ANSI_RE and strip_ansi_codes are lifted from the "console" crate.
// Copyright 2017 Armin Ronacher <[email protected]>. MIT License.
static ref STRIP_ANSI_RE: Regex = Regex::new(
r"[\x1b\x9b][\[()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-PRZcf-nqry=><]"
).unwrap();
static ref NO_COLOR: bool = {
env::var_os("NO_COLOR").is_some()
};
}

/// Helper function to strip ansi codes.
Expand All @@ -28,68 +29,66 @@ pub fn use_color() -> bool {
!(*NO_COLOR)
}

pub fn red_bold(s: String) -> impl fmt::Display {
let mut style = Style::new();
#[cfg(windows)]
pub fn enable_ansi() {
BufferWriter::stdout(ColorChoice::AlwaysAnsi);
}

fn style(s: &str, colorspec: ColorSpec) -> impl fmt::Display {
let mut v = Vec::new();
let mut ansi_writer = Ansi::new(&mut v);
if use_color() {
style = style.bold().fg(Red);
ansi_writer.set_color(&colorspec).unwrap();
}
style.paint(s)
ansi_writer.write_all(s.as_bytes()).unwrap();
ansi_writer.reset().unwrap();
String::from_utf8_lossy(&v).into_owned()
}

pub fn red_bold(s: String) -> impl fmt::Display {
let mut style_spec = ColorSpec::new();
style_spec.set_fg(Some(Red)).set_bold(true);
style(&s, style_spec)
}

pub fn italic_bold(s: String) -> impl fmt::Display {
let mut style = Style::new();
if use_color() {
style = style.italic().bold();
}
style.paint(s)
let mut style_spec = ColorSpec::new();
style_spec.set_bold(true).set_italic(true);
style(&s, style_spec)
}

pub fn black_on_white(s: String) -> impl fmt::Display {
let mut style = Style::new();
if use_color() {
style = style.on(White).fg(Black);
}
style.paint(s)
let mut style_spec = ColorSpec::new();
style_spec.set_bg(Some(White)).set_fg(Some(Black));
style(&s, style_spec)
}

pub fn yellow(s: String) -> impl fmt::Display {
let mut style = Style::new();
if use_color() {
// matches TypeScript's ForegroundColorEscapeSequences.Yellow
style = style.fg(Fixed(11));
}
style.paint(s)
let mut style_spec = ColorSpec::new();
style_spec.set_fg(Some(Ansi256(11)));
style(&s, style_spec)
}

pub fn cyan(s: String) -> impl fmt::Display {
let mut style = Style::new();
if use_color() {
// matches TypeScript's ForegroundColorEscapeSequences.Cyan
style = style.fg(Fixed(14));
}
style.paint(s)
let mut style_spec = ColorSpec::new();
style_spec.set_fg(Some(Ansi256(14)));
style(&s, style_spec)
}

pub fn red(s: String) -> impl fmt::Display {
let mut style = Style::new();
if use_color() {
style = style.fg(Red);
}
style.paint(s)
let mut style_spec = ColorSpec::new();
style_spec.set_fg(Some(Red));
style(&s, style_spec)
}

pub fn green(s: String) -> impl fmt::Display {
let mut style = Style::new();
if use_color() {
style = style.fg(Fixed(10)).bold();
}
style.paint(s)
let mut style_spec = ColorSpec::new();
style_spec.set_fg(Some(Ansi256(10)));
style(&s, style_spec)
}

pub fn bold(s: String) -> impl fmt::Display {
let mut style = Style::new();
if use_color() {
style = style.bold();
}
style.paint(s)
let mut style_spec = ColorSpec::new();
style_spec.set_bold(true);
style(&s, style_spec)
}
2 changes: 1 addition & 1 deletion cli/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -389,7 +389,7 @@ async fn test_command(

pub fn main() {
#[cfg(windows)]
ansi_term::enable_ansi_support().ok(); // For Windows 10
colors::enable_ansi(); // For Windows 10
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍


log::set_logger(&LOGGER).unwrap();
let args: Vec<String> = env::args().collect();
Expand Down
10 changes: 4 additions & 6 deletions cli/permissions.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license.
use crate::colors;
use crate::flags::DenoFlags;
use crate::op_error::OpError;
use ansi_term::Style;
#[cfg(not(test))]
use atty;
use log;
Expand Down Expand Up @@ -303,7 +303,7 @@ fn permission_prompt(message: &str) -> bool {
PERMISSION_EMOJI, message
);
// print to stderr so that if deno is > to a file this is still displayed.
eprint!("{}", Style::new().bold().paint(msg));
eprint!("{}", colors::bold(msg));
loop {
let mut input = String::new();
let stdin = io::stdin();
Expand All @@ -319,7 +319,7 @@ fn permission_prompt(message: &str) -> bool {
// If we don't get a recognized option try again.
let msg_again =
format!("Unrecognized option '{}' [g/d (g = grant, d = deny)] ", ch);
eprint!("{}", Style::new().bold().paint(msg_again));
eprint!("{}", colors::bold(msg_again));
}
};
}
Expand All @@ -344,9 +344,7 @@ fn log_perm_access(message: &str) {
if log_enabled!(log::Level::Info) {
eprintln!(
"{}",
Style::new()
.bold()
.paint(format!("{}️ Granted {}", PERMISSION_EMOJI, message))
colors::bold(format!("{}️ Granted {}", PERMISSION_EMOJI, message))
);
}
}
Expand Down
1 change: 0 additions & 1 deletion std/encoding/testdata/cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ edition = "2018"
[dependencies]
deno_core = { path = "./core" }

ansi_term = "0.11.0"
atty = "0.2.11"
dirs = "1.0.5"
flatbuffers = "0.5.0"
Expand Down
1 change: 0 additions & 1 deletion std/encoding/toml_test.ts
Original file line number Diff line number Diff line change
Expand Up @@ -260,7 +260,6 @@ Deno.test({
package: { name: "deno", version: "0.3.4", edition: "2018" },
dependencies: {
deno_core: { path: "./core" },
ansi_term: "0.11.0",
atty: "0.2.11",
dirs: "1.0.5",
flatbuffers: "0.5.0",
Expand Down