leetcode_cli/
flag.rs

1//! Flags in leetcode-cli
2//!
3//! ```sh
4//! FLAGS:
5//!     -d, --debug      debug mode
6//!     -h, --help       Prints help information
7//!     -V, --version    Prints version information
8//! ```
9use crate::err::Error;
10use clap::{Arg, ArgAction};
11use env_logger::Env;
12
13/// Abstract flag trait
14pub trait Flag {
15    fn usage() -> Arg;
16    fn handler() -> Result<(), Error>;
17}
18
19/// Debug logger
20pub struct Debug;
21
22impl Flag for Debug {
23    fn usage() -> Arg {
24        Arg::new("debug")
25            .short('d')
26            .long("debug")
27            .help("debug mode")
28            .action(ArgAction::SetTrue)
29    }
30
31    fn handler() -> Result<(), Error> {
32        env_logger::Builder::from_env(Env::default().default_filter_or("debug")).init();
33
34        Ok(())
35    }
36}