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}