1extern crate simon;
2
3use simon::*;
4
5#[derive(Debug, Clone)]
6enum Dimensions {
7 Fullscreen,
8 Window { width: u32, height: u32 },
9}
10
11impl Dimensions {
12 fn args() -> impl Arg<Item = Self> {
13 let window = args_depend! {
14 opt("", "width", "", ""),
15 opt("", "height", "", ""),
16 }
17 .option_map(|(width, height)| Dimensions::Window { width, height });
18 let fullscreen = flag("", "fullscreen", "").some_if(Dimensions::Fullscreen);
19 window.choice(fullscreen).required()
20 }
21}
22
23fn main() {
24 let dimensions = Dimensions::args().with_help_default().parse_env_or_exit();
25 println!("{:#?}", dimensions);
26}