1use bpaf::*;
4
5#[derive(Debug, Copy, Clone)]
7pub enum LevelFilter {
8 Off,
9 Error,
10 Warn,
11 Info,
12 Debug,
13 Trace,
14}
15
16#[derive(Bpaf)]
17#[bpaf(options)]
18#[allow(dead_code)]
19#[derive(Debug, Clone)]
20struct Options {
21 #[bpaf(external)]
22 verbose: LevelFilter,
23 #[bpaf(fallback(3))]
25 potato: usize,
26}
27
28fn verbose() -> impl Parser<LevelFilter> {
29 short('v')
30 .help("Verbosity level, use multiple times for more verbosity")
31 .req_flag(())
32 .count()
33 .map(|l| {
34 use LevelFilter::*;
35 [Off, Error, Warn, Info, Debug, Trace][l.clamp(0, 5)]
36 })
37}
38
39fn main() {
40 println!("{:#?}", options().run());
41}