summaryrefslogtreecommitdiff
path: root/crates/typst-cli/src
diff options
context:
space:
mode:
authortingerrr <me@tinger.dev>2024-01-02 10:03:01 +0100
committerGitHub <noreply@github.com>2024-01-02 09:03:01 +0000
commit4bf16d7acb1407325d95e24aa237af04c341ee2c (patch)
tree77d133838de3289d53af7b365831098519f30ca5 /crates/typst-cli/src
parent79a41aedbe596d0e357014ccf6b2e78a06cc74a4 (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.rs14
-rw-r--r--crates/typst-cli/src/main.rs14
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,
})
}