diff options
| author | tingerrr <me@tinger.dev> | 2024-01-02 10:03:01 +0100 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2024-01-02 09:03:01 +0000 |
| commit | 4bf16d7acb1407325d95e24aa237af04c341ee2c (patch) | |
| tree | 77d133838de3289d53af7b365831098519f30ca5 /crates/typst-cli/src | |
| parent | 79a41aedbe596d0e357014ccf6b2e78a06cc74a4 (diff) | |
Add a `--color` flag (#3060)
Co-authored-by: Laurenz <laurmaedje@gmail.com>
Diffstat (limited to 'crates/typst-cli/src')
| -rw-r--r-- | crates/typst-cli/src/args.rs | 14 | ||||
| -rw-r--r-- | crates/typst-cli/src/main.rs | 14 |
2 files changed, 23 insertions, 5 deletions
diff --git a/crates/typst-cli/src/args.rs b/crates/typst-cli/src/args.rs index ec5e8ed1..c14f0277 100644 --- a/crates/typst-cli/src/args.rs +++ b/crates/typst-cli/src/args.rs @@ -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>, diff --git a/crates/typst-cli/src/main.rs b/crates/typst-cli/src/main.rs index 15a758af..8917adc3 100644 --- a/crates/typst-cli/src/main.rs +++ b/crates/typst-cli/src/main.rs @@ -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, }) } |
