--no-color to hide colors in log messages

master
chris west 4 years ago
parent de8607bee8
commit 4ee7008070

@ -142,6 +142,7 @@ of Gopher!
-h, --host HOST Hostname for links. [Default: {host}]
-p, --port PORT Port for links. [Default: {port}]
-b, --bind ADDRESS Socket address to bind to. [Default: {bind}]
--no-color Don't show colors in log messages.
Other flags:

@ -5,7 +5,24 @@
//! println!("{}Error: {}{}", color::Red, "Something broke.", color::Reset);
//! ```
use std::fmt;
use std::{
fmt,
sync::atomic::{AtomicBool, Ordering as AtomicOrdering},
};
/// Whether to show colors or not.
/// Defaults to true.
static SHOW_COLORS: AtomicBool = AtomicBool::new(true);
/// Hide colors.
pub fn hide_colors() {
SHOW_COLORS.swap(false, AtomicOrdering::Relaxed);
}
/// Are we showing colors are not?
pub fn showing_colors() -> bool {
SHOW_COLORS.load(AtomicOrdering::Relaxed)
}
macro_rules! color {
($t:ident, $code:expr) => {
@ -13,7 +30,11 @@ macro_rules! color {
pub struct $t;
impl fmt::Display for $t {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
write!(f, "\x1b[{}m", $code)
if showing_colors() {
write!(f, "\x1b[{}m", $code)
} else {
write!(f, "")
}
}
}
};

@ -18,6 +18,7 @@ fn main() {
match arg.as_ref() {
"--version" | "-v" | "-version" => return print_version(),
"--help" | "-help" => return print_help(),
"--no-color" | "-no-color" => phd::color::hide_colors(),
"--render" | "-render" | "-r" => {
if let Some(path) = args.next() {
render = path;
@ -94,6 +95,7 @@ Options:
-h, --host HOST Hostname for links. [Default: {host}]
-p, --port PORT Port for links. [Default: {port}]
-b, --bind ADDRESS Socket address to bind to. [Default: {bind}]
--no-color Don't show colors in log messages.
Other flags:

Loading…
Cancel
Save