use std::io::stdout;
use std::path::PathBuf;
use std::process::ExitCode;
use clap::Parser;
use hid_decode::{Verbosity, decode_with_options};
#[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 verbosity = Verbosity::default();
if args.verbose {
verbosity.display_tag_type = true;
}
let Ok(()) = decode_with_options(stdout(), descriptor_bytes, verbosity) else {
eprintln!("error writing decoded descriptor");
return ExitCode::FAILURE;
};
ExitCode::SUCCESS
}