use clap::{Parser, Subcommand, command};
use xzam::{score_sample, store_audio};
#[derive(Parser)]
#[command(name = "kvs", version, about, author)]
struct Args {
#[clap(subcommand)]
cmd: Subcommands,
}
#[derive(Subcommand)]
enum Subcommands {
StoreAudio {
track_id: String,
track_path: String,
},
FindSample {
track_path: String,
},
}
fn main() {
let env_vars = Args::parse();
match env_vars.cmd {
Subcommands::StoreAudio {
track_id,
track_path,
} => {
let res = store_audio(&track_id, &track_path);
match res {
Ok(()) => {
println!("Track - {track_id} saved successfully");
}
Err(e) => {
eprintln!("{:?}", e);
}
}
}
Subcommands::FindSample { track_path } => {
let res = score_sample(&track_path);
match res {
Ok((track_id, score, delta)) => {
println!(
"Winning audio has track_id: {} with score: {}; delta suggests offset: {}",
track_id, score, delta
);
}
Err(e) => {
eprintln!("Unable to score {:?}", e);
}
}
}
}
}