46 lines
1.2 KiB
Rust
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
|
|
)
|
|
}
|
|
}
|