cover/src/main.rs

46 lines
1.2 KiB
Rust

use std::fs;
use std::process::exit;
use nanoserde::DeJson;
use pico_args::Arguments;
use cover::fetch::fetch_library;
const USAGE: &str = "Usage:
# process library.json
$ cover json path/to/library.json
# fetch artists from musicbrainz
$ cover fetch 'Taylor Swift' 'black midi'";
#[tokio::main]
async fn main() {
let mut args = Arguments::from_env();
let library = match args.subcommand().unwrap().as_deref() {
Some("json") => {
let file_path = args
.finish()
.into_iter()
.next()
.unwrap()
.into_string()
.unwrap();
let json = fs::read_to_string(file_path).expect("Failed to open library file");
DeJson::deserialize_json(&json).expect("Failed to deserialize library file")
}
Some("fetch") => fetch_library(args.finish().into_iter().flat_map(|s| s.into_string()))
.await
.unwrap(),
_ => {
eprintln!("{USAGE}");
exit(1);
}
};
for cover in library.library_covers() {
println!("Found cover!");
println!(
"{}, by {:?}, covered by {}",
cover.title, cover.writers, cover.performer
)
}
}