use std::io::stdout;
use std::path::PathBuf;
use std::process::ExitCode;
use clap::Parser;
use hid_decode::TextDecoder;
#[derive(Debug, Clone, Parser)]
struct Arguments {
descriptor_filename: PathBuf,
#[arg(short)]
verbose: bool,
}
fn main() -> ExitCode {
let args = Arguments::parse();
let descriptor_bytes = match std::fs::read(&args.descriptor_filename) {
Ok(bytes) => bytes,
Err(e) => {
eprintln!("failed to read {}: {e}", args.descriptor_filename.display());
return ExitCode::FAILURE;
}
};
let mut decoder = TextDecoder::new(stdout());
if args.verbose {
decoder = decoder.display_tag_type();
decoder = decoder.display_raw_bytes();
}
let Ok(()) = decoder.decode(&descriptor_bytes) else {
eprintln!("error writing decoded descriptor");
return ExitCode::FAILURE;
};
ExitCode::SUCCESS
}