From 665fbb64601e14ec527e6cd5b94a85a81429f39e 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 | 136 +++++++++++++++--------------------------- Cargo.toml | 3 +- src/diff.rs | 6 +- src/status_emitter.rs | 26 ++++---- 4 files changed, 67 insertions(+), 104 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9f36c937..667805d6 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -160,16 +160,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" @@ -186,7 +176,7 @@ dependencies = [ "lazy_static", "libc", "unicode-width", - "windows-sys 0.52.0", + "windows-sys", ] [[package]] @@ -217,7 +207,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a258e46cdc063eb8519c00b9fc845fc47bcfca4130e2f08e88665ceda8474245" dependencies = [ "libc", - "windows-sys 0.52.0", + "windows-sys", ] [[package]] @@ -242,6 +232,12 @@ version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" +[[package]] +name = "hermit-abi" +version = "0.3.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d231dfb89cfffdbc30e7fc41579ed6066ad03abda9e567ccafae602b97ec5024" + [[package]] name = "indenter" version = "0.3.3" @@ -270,6 +266,23 @@ dependencies = [ "cfg-if", ] +[[package]] +name = "is-terminal" +version = "0.4.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f23ff5ef2b80d608d61efee834934d862cd92461afc0560dedf493e4c033738b" +dependencies = [ + "hermit-abi", + "libc", + "windows-sys", +] + +[[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.10" @@ -468,7 +481,7 @@ dependencies = [ "errno", "libc", "linux-raw-sys", - "windows-sys 0.52.0", + "windows-sys", ] [[package]] @@ -536,6 +549,16 @@ dependencies = [ "color-eyre", ] +[[package]] +name = "supports-color" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6398cde53adc3c4557306a96ce67b302968513830a77a95b2b17305d9719a89" +dependencies = [ + "is-terminal", + "is_ci", +] + [[package]] name = "syn" version = "2.0.48" @@ -557,7 +580,7 @@ dependencies = [ "fastrand", "redox_syscall", "rustix", - "windows-sys 0.52.0", + "windows-sys", ] [[package]] @@ -641,12 +664,12 @@ dependencies = [ "cargo-platform", "cargo_metadata", "color-eyre", - "colored", "comma", "crossbeam-channel", "indicatif", "lazy_static", "levenshtein", + "owo-colors", "prettydiff", "regex", "rustc_version", @@ -654,6 +677,7 @@ dependencies = [ "serde", "serde_json", "spanned", + "supports-color", "tempfile", ] @@ -697,37 +721,13 @@ version = "0.4.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f" -[[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.0", -] - -[[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]] @@ -736,93 +736,51 @@ version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8a18201040b24831fbb9e4eb208f8892e1f50a37feb53cc7ff887feb8f50e7cd" dependencies = [ - "windows_aarch64_gnullvm 0.52.0", - "windows_aarch64_msvc 0.52.0", - "windows_i686_gnu 0.52.0", - "windows_i686_msvc 0.52.0", - "windows_x86_64_gnu 0.52.0", - "windows_x86_64_gnullvm 0.52.0", - "windows_x86_64_msvc 0.52.0", + "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.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cb7764e35d4db8a7921e09562a0304bf2f93e0a51bfccee0bd0bb0b666b015ea" -[[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.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbaa0368d4f1d2aaefc55b6fcfee13f41544ddf36801e793edbbfd7d7df075ef" -[[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.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a28637cb1fa3560a16915793afb20081aba2c92ee8af57b4d5f28e4b3e7df313" -[[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.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ffe5e8e31046ce6230cc7215707b816e339ff4d4d67c65dffa206fd0f7aa7b9a" -[[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.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3d6fa32db2bc4a2f5abeacf2b69f7992cd09dca97498da74a151a3132c26befd" -[[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.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1a657e1e9d3f514745a572a6846d3c7aa7dbe1658c056ed9c3344c4109a6949e" -[[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.0" diff --git a/Cargo.toml b/Cargo.toml index 6d53c955..9b73aeb5 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" @@ -30,6 +30,7 @@ prettydiff = { version = "0.6.4", default_features = false } annotate-snippets = { version = "0.10.0" } levenshtein = "1.0.5" spanned = "0.1.6" +supports-color = "2.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 7bf3f9c0..1ba9e44c 100644 --- a/src/status_emitter.rs +++ b/src/status_emitter.rs @@ -2,9 +2,9 @@ use annotate_snippets::{Annotation, AnnotationType, Renderer, Slice, Snippet, SourceAnnotation}; 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::{ @@ -213,13 +213,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(); @@ -592,6 +591,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(); @@ -639,11 +640,12 @@ fn create_error( .collect(), footer: vec![], }; - 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)); }