From 3733106cd4e8ee33b0f661ccf90050551dc86d0f Mon Sep 17 00:00:00 2001 From: klensy Date: Fri, 8 Mar 2024 15:11:48 +0300 Subject: [PATCH] switch colored to owo-colors --- Cargo.lock | 112 ++++++++++-------------------------------- Cargo.toml | 3 +- src/diff.rs | 6 ++- src/status_emitter.rs | 26 +++++----- 4 files changed, 46 insertions(+), 101 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 230ab156..68c8c8a3 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -136,16 +136,6 @@ dependencies = [ "tracing-error", ] -[[package]] -name = "colored" -version = "2.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cbf2150cce219b664a8a70df7a1f933836724b503f8a413af9365b4dcc4d90b8" -dependencies = [ - "lazy_static", - "windows-sys 0.48.0", -] - [[package]] name = "comma" version = "1.0.0" @@ -162,7 +152,7 @@ dependencies = [ "lazy_static", "libc", "unicode-width", - "windows-sys 0.52.0", + "windows-sys", ] [[package]] @@ -230,6 +220,12 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "is_ci" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7655c9839580ee829dfacba1d1278c2b7883e50a277ff7541299489d6bdfdc45" + [[package]] name = "itoa" version = "1.0.11" @@ -462,6 +458,15 @@ dependencies = [ "color-eyre", ] +[[package]] +name = "supports-color" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9829b314621dfc575df4e409e79f9d6a66a3bd707ab73f23cb4aa3a854ac854f" +dependencies = [ + "is_ci", +] + [[package]] name = "syn" version = "2.0.58" @@ -566,12 +571,12 @@ dependencies = [ "cargo-platform", "cargo_metadata", "color-eyre", - "colored", "comma", "crossbeam-channel", "indicatif", "lazy_static", "levenshtein", + "owo-colors", "prettydiff", "regex", "rustc_version", @@ -579,6 +584,7 @@ dependencies = [ "serde", "serde_json", "spanned", + "supports-color", ] [[package]] @@ -599,37 +605,13 @@ version = "0.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "830b7e5d4d90034032940e4ace0d9a9a057e7a45cd94e6c007832e39edb82f6d" -[[package]] -name = "windows-sys" -version = "0.48.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "677d2418bec65e3338edb076e806bc1ec15693c5d0104683f2efe857f61056a9" -dependencies = [ - "windows-targets 0.48.5", -] - [[package]] name = "windows-sys" version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "282be5f36a8ce781fad8c8ae18fa3f9beff57ec1b52cb3de0789201425d9a33d" dependencies = [ - "windows-targets 0.52.4", -] - -[[package]] -name = "windows-targets" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9a2fa6e2155d7247be68c096456083145c183cbbbc2764150dda45a87197940c" -dependencies = [ - "windows_aarch64_gnullvm 0.48.5", - "windows_aarch64_msvc 0.48.5", - "windows_i686_gnu 0.48.5", - "windows_i686_msvc 0.48.5", - "windows_x86_64_gnu 0.48.5", - "windows_x86_64_gnullvm 0.48.5", - "windows_x86_64_msvc 0.48.5", + "windows-targets", ] [[package]] @@ -638,93 +620,51 @@ version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7dd37b7e5ab9018759f893a1952c9420d060016fc19a472b4bb20d1bdd694d1b" dependencies = [ - "windows_aarch64_gnullvm 0.52.4", - "windows_aarch64_msvc 0.52.4", - "windows_i686_gnu 0.52.4", - "windows_i686_msvc 0.52.4", - "windows_x86_64_gnu 0.52.4", - "windows_x86_64_gnullvm 0.52.4", - "windows_x86_64_msvc 0.52.4", + "windows_aarch64_gnullvm", + "windows_aarch64_msvc", + "windows_i686_gnu", + "windows_i686_msvc", + "windows_x86_64_gnu", + "windows_x86_64_gnullvm", + "windows_x86_64_msvc", ] -[[package]] -name = "windows_aarch64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2b38e32f0abccf9987a4e3079dfb67dcd799fb61361e53e2882c3cbaf0d905d8" - [[package]] name = "windows_aarch64_gnullvm" version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bcf46cf4c365c6f2d1cc93ce535f2c8b244591df96ceee75d8e83deb70a9cac9" -[[package]] -name = "windows_aarch64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc35310971f3b2dbbf3f0690a219f40e2d9afcf64f9ab7cc1be722937c26b4bc" - [[package]] name = "windows_aarch64_msvc" version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "da9f259dd3bcf6990b55bffd094c4f7235817ba4ceebde8e6d11cd0c5633b675" -[[package]] -name = "windows_i686_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a75915e7def60c94dcef72200b9a8e58e5091744960da64ec734a6c6e9b3743e" - [[package]] name = "windows_i686_gnu" version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b474d8268f99e0995f25b9f095bc7434632601028cf86590aea5c8a5cb7801d3" -[[package]] -name = "windows_i686_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8f55c233f70c4b27f66c523580f78f1004e8b5a8b659e05a4eb49d4166cca406" - [[package]] name = "windows_i686_msvc" version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1515e9a29e5bed743cb4415a9ecf5dfca648ce85ee42e15873c3cd8610ff8e02" -[[package]] -name = "windows_x86_64_gnu" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "53d40abd2583d23e4718fddf1ebec84dbff8381c07cae67ff7768bbf19c6718e" - [[package]] name = "windows_x86_64_gnu" version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5eee091590e89cc02ad514ffe3ead9eb6b660aedca2183455434b93546371a03" -[[package]] -name = "windows_x86_64_gnullvm" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0b7b52767868a23d5bab768e390dc5f5c55825b6d30b86c844ff2dc7414044cc" - [[package]] name = "windows_x86_64_gnullvm" version = "0.52.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "77ca79f2451b49fa9e2af39f0747fe999fcda4f5e241b2898624dca97a1f2177" -[[package]] -name = "windows_x86_64_msvc" -version = "0.48.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538" - [[package]] name = "windows_x86_64_msvc" version = "0.52.4" diff --git a/Cargo.toml b/Cargo.toml index ae991cc8..e56c2ac4 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -13,7 +13,7 @@ doctest = false # but no doc tests [dependencies] rustc_version = "0.4" -colored = "2" +owo-colors = "3.5" lazy_static = "1.4.0" serde = { version = "1.0", features = ["derive"] } serde_json = "1.0" @@ -29,6 +29,7 @@ prettydiff = { version = "0.7", default_features = false } annotate-snippets = { version = "0.11.2" } levenshtein = "1.0.5" spanned = "0.2.1" +supports-color = "3.0" [dependencies.regex] version = "1.5.5" diff --git a/src/diff.rs b/src/diff.rs index b0346c25..7e32b8c5 100644 --- a/src/diff.rs +++ b/src/diff.rs @@ -1,4 +1,4 @@ -use colored::*; +use owo_colors::OwoColorize; use prettydiff::{basic::DiffOp, basic::DiffOp::*, diff_lines, diff_words}; /// How many lines of context are displayed around the actual diffs @@ -52,10 +52,12 @@ fn row(row: DiffOp<'_, &str>) { } fn print_line_diff(l: &str, r: &str) { + use supports_color::Stream; + let diff = diff_words(l, r); let diff = diff.diff(); if has_both_insertions_and_deletions(&diff) - || !colored::control::SHOULD_COLORIZE.should_colorize() + || !supports_color::on_cached(Stream::Stdout).map_or(false, |support| support.has_basic) { // The line both adds and removes chars, print both lines, but highlight their differences instead of // drawing the entire line in red/green. diff --git a/src/status_emitter.rs b/src/status_emitter.rs index 0f6b4d97..66806145 100644 --- a/src/status_emitter.rs +++ b/src/status_emitter.rs @@ -2,9 +2,9 @@ use annotate_snippets::{Renderer, Snippet}; use bstr::ByteSlice; -use colored::Colorize; use crossbeam_channel::{Sender, TryRecvError}; use indicatif::{MultiProgress, ProgressBar, ProgressDrawTarget, ProgressStyle}; +use owo_colors::OwoColorize; use spanned::Span; use crate::{ @@ -305,13 +305,12 @@ impl TestStatus for TextTest { self.text.sender.send(Msg::Inc).unwrap(); self.text.sender.send(Msg::Pop(self.msg(), None)).unwrap(); } else { - let result = match result { - Ok(TestOk::Ok) => "ok".green(), - Err(Errored { .. }) => "FAILED".bright_red().bold(), - Ok(TestOk::Ignored) => "ignored (in-test comment)".yellow(), - }; let old_msg = self.msg(); - let msg = format!("... {result}"); + let msg = match result { + Ok(TestOk::Ok) => format!("... {}", "ok".green()), + Err(Errored { .. }) => format!("... {}", "FAILED".bright_red().bold()), + Ok(TestOk::Ignored) => format!("... {}", "ignored (in-test comment)".yellow()), + }; if ProgressDrawTarget::stdout().is_hidden() { println!("{old_msg} {msg}"); std::io::stdout().flush().unwrap(); @@ -705,6 +704,8 @@ fn create_error( lines: &[(&[(&str, Option)], NonZeroUsize)], file: &Path, ) { + use supports_color::Stream; + let source = std::fs::read_to_string(file).unwrap(); let source: Vec<_> = source.split_inclusive('\n').collect(); let file = file.display().to_string(); @@ -744,11 +745,12 @@ fn create_error( })); msg = msg.snippet(snippet); } - let renderer = if colored::control::SHOULD_COLORIZE.should_colorize() { - Renderer::styled() - } else { - Renderer::plain() - }; + let renderer = + if supports_color::on_cached(Stream::Stdout).map_or(false, |support| support.has_basic) { + Renderer::styled() + } else { + Renderer::plain() + }; println!("{}", renderer.render(msg)); }