term: Remove `concolor` dependency
Use `anstyle-query` and `is-terminal` instead, which are the replacement crates that are also used in `snapbox`.
This commit is contained in:
parent
d249937a61
commit
8da6363cb3
File diff suppressed because it is too large
Load Diff
|
|
@ -7,7 +7,8 @@ edition = "2021"
|
||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
anyhow = { version = "1" }
|
anyhow = { version = "1" }
|
||||||
concolor = { version = "0", features = ["api_unstable"] }
|
anstyle-query = { version = "1.0.0" }
|
||||||
|
is-terminal = { version = "0.4.4" }
|
||||||
inquire = { version = "0.6", default-features = false, features = ["termion", "editor"] }
|
inquire = { version = "0.6", default-features = false, features = ["termion", "editor"] }
|
||||||
once_cell = { version = "1.13" }
|
once_cell = { version = "1.13" }
|
||||||
termion = { version = "2" }
|
termion = { version = "2" }
|
||||||
|
|
|
||||||
|
|
@ -1,10 +1,18 @@
|
||||||
use std::fmt;
|
use std::sync;
|
||||||
|
use std::sync::atomic::AtomicBool;
|
||||||
|
use std::{fmt, io};
|
||||||
|
|
||||||
|
use is_terminal::IsTerminal;
|
||||||
use unicode_width::UnicodeWidthStr;
|
use unicode_width::UnicodeWidthStr;
|
||||||
|
|
||||||
use super::color::Color;
|
use super::color::Color;
|
||||||
use super::style::{Property, Style};
|
use super::style::{Property, Style};
|
||||||
|
|
||||||
|
/// Whether paint styling is enabled or not.
|
||||||
|
static ENABLED: AtomicBool = AtomicBool::new(true);
|
||||||
|
/// Whether paint styling should be forced.
|
||||||
|
static FORCED: AtomicBool = AtomicBool::new(false);
|
||||||
|
|
||||||
/// A structure encapsulating an item and styling.
|
/// A structure encapsulating an item and styling.
|
||||||
#[derive(Debug, Default, Eq, PartialEq, Ord, PartialOrd, Hash, Copy, Clone)]
|
#[derive(Debug, Default, Eq, PartialEq, Ord, PartialOrd, Hash, Copy, Clone)]
|
||||||
pub struct Paint<T> {
|
pub struct Paint<T> {
|
||||||
|
|
@ -251,7 +259,36 @@ impl<T: fmt::Display> fmt::Display for Paint<T> {
|
||||||
impl Paint<()> {
|
impl Paint<()> {
|
||||||
/// Returns `true` if coloring is enabled and `false` otherwise.
|
/// Returns `true` if coloring is enabled and `false` otherwise.
|
||||||
pub fn is_enabled() -> bool {
|
pub fn is_enabled() -> bool {
|
||||||
concolor::get(concolor::Stream::Stdout).ansi_color()
|
if FORCED.load(sync::atomic::Ordering::SeqCst) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
let clicolor = anstyle_query::clicolor();
|
||||||
|
let clicolor_enabled = clicolor.unwrap_or(false);
|
||||||
|
let clicolor_disabled = !clicolor.unwrap_or(true);
|
||||||
|
let is_terminal = io::stdout().is_terminal();
|
||||||
|
let is_enabled = ENABLED.load(sync::atomic::Ordering::SeqCst);
|
||||||
|
|
||||||
|
is_terminal
|
||||||
|
&& is_enabled
|
||||||
|
&& !anstyle_query::no_color()
|
||||||
|
&& !clicolor_disabled
|
||||||
|
&& (anstyle_query::term_supports_color() || clicolor_enabled || anstyle_query::is_ci())
|
||||||
|
|| anstyle_query::clicolor_force()
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Enable paint styling.
|
||||||
|
pub fn enable() {
|
||||||
|
ENABLED.store(true, sync::atomic::Ordering::SeqCst);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Force paint styling.
|
||||||
|
pub fn force() {
|
||||||
|
FORCED.store(true, sync::atomic::Ordering::SeqCst);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// Disable paint styling.
|
||||||
|
pub fn disable() {
|
||||||
|
ENABLED.store(false, sync::atomic::Ordering::SeqCst);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -10,7 +10,7 @@ static SERIAL: Mutex<()> = Mutex::new(());
|
||||||
fn colors_enabled() {
|
fn colors_enabled() {
|
||||||
let _guard = SERIAL.lock();
|
let _guard = SERIAL.lock();
|
||||||
|
|
||||||
concolor::set(concolor::ColorChoice::Always);
|
Paint::force();
|
||||||
|
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
Paint::new("text/plain").to_string(),
|
Paint::new("text/plain").to_string(),
|
||||||
|
|
@ -144,7 +144,7 @@ fn colors_enabled() {
|
||||||
fn colors_disabled() {
|
fn colors_disabled() {
|
||||||
let _guard = SERIAL.lock();
|
let _guard = SERIAL.lock();
|
||||||
|
|
||||||
concolor::set(concolor::ColorChoice::Never);
|
Paint::disable();
|
||||||
|
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
Paint::new("text/plain").to_string(),
|
Paint::new("text/plain").to_string(),
|
||||||
|
|
@ -246,7 +246,7 @@ fn wrapping() {
|
||||||
let inner = || format!("{} b {}", Paint::red("a"), Paint::green("c"));
|
let inner = || format!("{} b {}", Paint::red("a"), Paint::green("c"));
|
||||||
let inner2 = || format!("0 {} 1", Paint::magenta(&inner()).wrap());
|
let inner2 = || format!("0 {} 1", Paint::magenta(&inner()).wrap());
|
||||||
|
|
||||||
concolor::set(concolor::ColorChoice::Always);
|
Paint::force();
|
||||||
|
|
||||||
assert_eq!(
|
assert_eq!(
|
||||||
Paint::new("text/plain").wrap().to_string(),
|
Paint::new("text/plain").wrap().to_string(),
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue