From 1b18401ad9acc6f2fe6625b5cbb9b2b8f162536a Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Wed, 7 Nov 2018 20:34:42 -0500 Subject: factor out into subcommands --- src/main.rs | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) (limited to 'src/main.rs') diff --git a/src/main.rs b/src/main.rs index ed5a189..c104b23 100644 --- a/src/main.rs +++ b/src/main.rs @@ -17,9 +17,13 @@ mod lastfm; mod paths; mod db; -fn run(opts: cli::Options) -> failure::Fallible<()> { +fn sync(opts: &cli::Options) -> failure::Fallible<()> { let db = db::DB::new(&paths::dbpath())?; - let lastfm = lastfm::LastFMClient::new(&opts.api_key, &opts.username); + let lastfm = lastfm::LastFMClient::new( + opts.api_key.as_ref().unwrap(), + opts.username.as_ref().unwrap() + ); + let exporter = exporter::Exporter::new(&db, &lastfm); let to_fetch = exporter.tracks_to_sync()?; @@ -39,6 +43,13 @@ fn run(opts: cli::Options) -> failure::Fallible<()> { Ok(()) } +fn run() -> failure::Fallible<()> { + let opts = cli::get_options()?; + match opts.command { + cli::Command::Sync => sync(&opts), + } +} + fn program_name() -> failure::Fallible { let program = std::env::args() .next() @@ -52,8 +63,7 @@ fn program_name() -> failure::Fallible { } fn main() { - let opts = cli::get_options(); - match run(opts) { + match run() { Ok(_) => {}, Err(e) => { let name = program_name() -- cgit v1.2.3-54-g00ecf