From 544b316bbaa36448b3272c4e00cd21c07fe0971d Mon Sep 17 00:00:00 2001 From: Jesse Luehrs Date: Wed, 7 Nov 2018 20:48:13 -0500 Subject: move subcommands to their own file --- src/cmd/mod.rs | 1 + src/cmd/sync.rs | 31 +++++++++++++++++++++++++++++++ src/main.rs | 27 ++------------------------- 3 files changed, 34 insertions(+), 25 deletions(-) create mode 100644 src/cmd/mod.rs create mode 100644 src/cmd/sync.rs diff --git a/src/cmd/mod.rs b/src/cmd/mod.rs new file mode 100644 index 0000000..d086d5b --- /dev/null +++ b/src/cmd/mod.rs @@ -0,0 +1 @@ +pub mod sync; diff --git a/src/cmd/sync.rs b/src/cmd/sync.rs new file mode 100644 index 0000000..f8ca2b6 --- /dev/null +++ b/src/cmd/sync.rs @@ -0,0 +1,31 @@ +use cli; +use db; +use exporter; +use lastfm; +use paths; + +use failure; + +pub fn run(opts: &cli::Options) -> failure::Fallible<()> { + let db = db::DB::new(&paths::dbpath())?; + 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()?; + let bar = indicatif::ProgressBar::new(to_fetch); + bar.set_style( + indicatif::ProgressStyle::default_bar() + .progress_chars("=> ") + .template("Downloading {pos}/{len} tracks...\n{percent:>3}% [{wide_bar}] {eta:5}") + ); + + exporter.sync(|_| { bar.inc(1); })?; + + bar.finish_with_message("done"); + + Ok(()) +} diff --git a/src/main.rs b/src/main.rs index 55e1725..dc307f6 100644 --- a/src/main.rs +++ b/src/main.rs @@ -12,39 +12,16 @@ extern crate serde_json; extern crate serde_derive; mod cli; +mod cmd; mod exporter; mod lastfm; mod paths; mod db; -fn sync(opts: &cli::Options) -> failure::Fallible<()> { - let db = db::DB::new(&paths::dbpath())?; - 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()?; - let bar = indicatif::ProgressBar::new(to_fetch); - bar.set_style( - indicatif::ProgressStyle::default_bar() - .progress_chars("=> ") - .template("Downloading {pos}/{len} tracks...\n{percent:>3}% [{wide_bar}] {eta:5}") - ); - - exporter.sync(|_| { bar.inc(1); })?; - - bar.finish_with_message("done"); - - Ok(()) -} - fn run() -> failure::Fallible<()> { let opts = cli::get_options()?; match opts.command { - cli::Command::Sync => sync(&opts), + cli::Command::Sync => cmd::sync::run(&opts), } } -- cgit v1.2.3