From 6d4abd89b2dfcdce0bd59d627a31e92fcc745c94 Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Thu, 8 Nov 2018 02:23:16 -0500 Subject: better options handling --- src/cli.rs | 24 +++++++++++------------- 1 file changed, 11 insertions(+), 13 deletions(-) (limited to 'src/cli.rs') diff --git a/src/cli.rs b/src/cli.rs index 0c140e7..1976d93 100644 --- a/src/cli.rs +++ b/src/cli.rs @@ -1,15 +1,12 @@ const _DUMMY_DEPENDENCY: &'static str = include_str!("../Cargo.toml"); pub enum Command { - Sync, + Sync { + username: String, + } } -pub struct Options { - pub command: Command, - pub username: Option, -} - -pub fn get_options() -> failure::Fallible { +pub fn get_options() -> failure::Fallible { let matches = app_from_crate!() .subcommand( clap::SubCommand::with_name("sync") @@ -22,14 +19,15 @@ pub fn get_options() -> failure::Fallible { ) .get_matches(); - let (command, sub_matches) = match matches.subcommand() { - ("sync", Some(matches)) => (Command::Sync, matches), + let command = match matches.subcommand() { + ("sync", Some(matches)) => { + Command::Sync { + username: matches.value_of("username").unwrap().to_string(), + } + }, (name, Some(_)) => bail!("unknown subcommand: {}", name), (_, None) => bail!("no subcommand given"), }; - Ok(Options { - command: command, - username: sub_matches.value_of("username").map(|s| s.to_string()), - }) + Ok(command) } -- cgit v1.2.3-54-g00ecf