X-Git-Url: https://git.r.bdr.sh/rbdr/lyricli/blobdiff_plain/44e7b4de4073e6dc25681bb2fa6977bf5869689a..e4117b21a5e9cfaa3278e9e25711aff363e2ac92:/src/main.rs diff --git a/src/main.rs b/src/main.rs index a611926..7b61a85 100644 --- a/src/main.rs +++ b/src/main.rs @@ -2,17 +2,16 @@ mod configuration; mod lyrics_engine; mod sources; -use std::io::{Result, Error, ErrorKind::Other}; use clap::Parser; +use std::io::{Error, ErrorKind::Other, Result}; use configuration::Configuration; -use sources::{enable, disable, get_track, reset, list}; use lyrics_engine::print_lyrics; +use sources::{disable, enable, get_track, list, reset}; #[derive(Parser, Debug)] #[command(version, about, long_about = None)] struct Arguments { - // Positional Arguments /// Specify the artist. artist: Option, @@ -41,11 +40,27 @@ struct Arguments { pub struct Track { pub name: String, - pub artist: String + pub artist: String, } #[tokio::main] async fn main() -> Result<()> { + let result = run().await; + + if cfg!(debug_assertions) { + result + } else { + match result { + Ok(_) => Ok(()), + Err(e) => { + eprintln!("Error: {}", e); + std::process::exit(1); + } + } + } +} + +async fn run() -> Result<()> { let mut configuration = Configuration::new(); let arguments = Arguments::parse(); @@ -56,7 +71,7 @@ async fn main() -> Result<()> { if configuration.is_enabled(&source) { print!(" (enabled)"); } - println!(""); + println!(); } return Ok(()); } @@ -83,11 +98,11 @@ async fn main() -> Result<()> { if let Some(artist) = arguments.artist { current_track = Track { name: arguments.track_name.unwrap_or("".to_string()), - artist: artist + artist, }; } else { - current_track = get_track() - .ok_or_else(|| Error::new(Other, "No Artist/Song could be found :("))? + current_track = + get_track().ok_or_else(|| Error::new(Other, "No Artist/Song could be found :("))? } print_lyrics(current_track, arguments.show_title).await