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