Skip to main content

dots/
cli.rs

1//! The CLI interface
2
3use clap::{
4    Parser,
5    builder::styling::{AnsiColor, Effects},
6};
7
8/// Styles for the CLI
9const STYLES: clap::builder::Styles = clap::builder::Styles::styled()
10    .header(AnsiColor::BrightGreen.on_default().effects(Effects::BOLD))
11    .usage(AnsiColor::BrightGreen.on_default().effects(Effects::BOLD))
12    .literal(AnsiColor::BrightCyan.on_default().effects(Effects::BOLD))
13    .placeholder(AnsiColor::BrightCyan.on_default())
14    .error(AnsiColor::BrightRed.on_default().effects(Effects::BOLD))
15    .valid(AnsiColor::BrightCyan.on_default().effects(Effects::BOLD))
16    .invalid(AnsiColor::BrightYellow.on_default().effects(Effects::BOLD));
17
18/// Command-line interface
19#[derive(Parser, Debug, Copy, Clone)]
20#[command(version, styles = STYLES, long_about = None)]
21#[allow(clippy::struct_excessive_bools, reason = "normal for CLIs")]
22pub struct Cli {
23    /// Control how much is logged
24    #[command(flatten)]
25    pub verbosity: clap_verbosity_flag::Verbosity<clap_verbosity_flag::InfoLevel>,
26}