119625d8cSopenharmony_ci// Copyright 2018 Guillaume Pinot (@TeXitoi) <texitoi@texitoi.eu>
219625d8cSopenharmony_ci//
319625d8cSopenharmony_ci// Licensed under the Apache License, Version 2.0 <LICENSE-APACHE or
419625d8cSopenharmony_ci// http://www.apache.org/licenses/LICENSE-2.0> or the MIT license
519625d8cSopenharmony_ci// <LICENSE-MIT or http://opensource.org/licenses/MIT>, at your
619625d8cSopenharmony_ci// option. This file may not be copied, modified, or distributed
719625d8cSopenharmony_ci// except according to those terms.
819625d8cSopenharmony_ci
919625d8cSopenharmony_ciuse clap::Parser;
1019625d8cSopenharmony_ci
1119625d8cSopenharmony_ci#[derive(Parser, Debug)]
1219625d8cSopenharmony_ci#[command(name = "make-cookie")]
1319625d8cSopenharmony_cistruct MakeCookie {
1419625d8cSopenharmony_ci    #[arg(short)]
1519625d8cSopenharmony_ci    s: String,
1619625d8cSopenharmony_ci
1719625d8cSopenharmony_ci    #[command(skip, flatten)]
1819625d8cSopenharmony_ci    cmd: Command,
1919625d8cSopenharmony_ci}
2019625d8cSopenharmony_ci
2119625d8cSopenharmony_ci#[derive(Parser, Debug)]
2219625d8cSopenharmony_cienum Command {
2319625d8cSopenharmony_ci    #[command(name = "pound")]
2419625d8cSopenharmony_ci    /// Pound acorns into flour for cookie dough.
2519625d8cSopenharmony_ci    Pound { acorns: u32 },
2619625d8cSopenharmony_ci
2719625d8cSopenharmony_ci    Sparkle {
2819625d8cSopenharmony_ci        #[arg(short)]
2919625d8cSopenharmony_ci        color: String,
3019625d8cSopenharmony_ci    },
3119625d8cSopenharmony_ci}
3219625d8cSopenharmony_ci
3319625d8cSopenharmony_ciimpl Default for Command {
3419625d8cSopenharmony_ci    fn default() -> Self {
3519625d8cSopenharmony_ci        Command::Pound { acorns: 0 }
3619625d8cSopenharmony_ci    }
3719625d8cSopenharmony_ci}
3819625d8cSopenharmony_ci
3919625d8cSopenharmony_cifn main() {
4019625d8cSopenharmony_ci    let opt = MakeCookie::parse();
4119625d8cSopenharmony_ci    println!("{:?}", opt);
4219625d8cSopenharmony_ci}
43