fallback_command/
fallback_command.rs

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
//! Parse some commands manually or collect anything else as
//! for manual parsing
use bpaf::*;
use std::ffi::OsString;

#[derive(Debug, Clone, Bpaf)]
#[bpaf(options)]
#[allow(dead_code)]
enum Commands {
    #[bpaf(command)]
    Build {
        /// Optimization level
        opt: u32,
    },
    Fallback(#[bpaf(external(fallback), hide)] Fallback),
}

#[derive(Debug, Clone, Bpaf)]
#[allow(dead_code)]
struct Fallback {
    #[bpaf(positional("COMMAND"))]
    name: String,

    #[bpaf(any("ARG", Some))]
    args: Vec<OsString>,
}

fn main() {
    let opts = commands().run();
    println!("{:?}", opts);
}