1#![cfg_attr(docsrs, feature(doc_auto_cfg))]
27#![warn(missing_docs)]
28#![warn(clippy::print_stderr)]
29#![warn(clippy::print_stdout)]
30
31pub use clap::ColorChoice;
32
33#[allow(clippy::exhaustive_structs)]
35#[derive(Copy, Clone, Default, Debug, PartialEq, Eq, clap::Args)]
36#[command(about = None, long_about = None)]
37pub struct Color {
38 #[arg(long, default_value_t = ColorChoice::Auto, value_name = "WHEN", value_enum, global = true)]
40 pub color: ColorChoice,
41}
42
43impl Color {
44 pub fn write_global(&self) {
46 self.as_choice().write_global();
47 }
48
49 pub fn as_choice(&self) -> colorchoice::ColorChoice {
51 match self.color {
52 ColorChoice::Auto => colorchoice::ColorChoice::Auto,
53 ColorChoice::Always => colorchoice::ColorChoice::Always,
54 ColorChoice::Never => colorchoice::ColorChoice::Never,
55 }
56 }
57}
58
59#[cfg(test)]
60mod test {
61 use super::*;
62
63 #[test]
64 fn verify_app() {
65 #[derive(Debug, clap::Parser)]
66 struct Cli {
67 #[clap(flatten)]
68 color: Color,
69 }
70
71 use clap::CommandFactory;
72 Cli::command().debug_assert();
73 }
74}