Add a --color flag (#3060)

Co-authored-by: Laurenz <laurmaedje@gmail.com>
This commit is contained in:
tingerrr 2024-01-02 10:03:01 +01:00 committed by GitHub
parent 79a41aedbe
commit 4bf16d7acb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 23 additions and 5 deletions

View File

@ -2,7 +2,7 @@ use std::fmt::{self, Display, Formatter};
use std::path::PathBuf;
use clap::builder::ValueParser;
use clap::{ArgAction, Args, Parser, Subcommand, ValueEnum};
use clap::{ArgAction, Args, ColorChoice, Parser, Subcommand, ValueEnum};
use semver::Version;
/// The character typically used to separate path components
@ -17,6 +17,18 @@ pub struct CliArguments {
#[command(subcommand)]
pub command: Command,
/// Set when to use color.
/// auto = use color if a capable terminal is detected
#[clap(
long,
value_name = "WHEN",
require_equals = true,
num_args = 0..=1,
default_value = "auto",
default_missing_value = "always",
)]
pub color: ColorChoice,
/// Path to a custom CA certificate to use when making network requests.
#[clap(long = "cert", env = "TYPST_CERT")]
pub cert: Option<PathBuf>,

View File

@ -68,10 +68,16 @@ fn print_error(msg: &str) -> io::Result<()> {
/// Get stderr with color support if desirable.
fn color_stream() -> termcolor::StandardStream {
termcolor::StandardStream::stderr(if std::io::stderr().is_terminal() {
ColorChoice::Auto
} else {
ColorChoice::Never
termcolor::StandardStream::stderr(match ARGS.color {
clap::ColorChoice::Auto => {
if std::io::stderr().is_terminal() {
ColorChoice::Auto
} else {
ColorChoice::Never
}
}
clap::ColorChoice::Always => ColorChoice::Always,
clap::ColorChoice::Never => ColorChoice::Never,
})
}