use crate::prelude::*;
use abscissa_core::Command;
use clap::Parser;
use std::process;
use yubihsm::connector::usb::Devices;
#[derive(Command, Debug, Default, Parser)]
pub struct DetectCommand {
#[clap(short = 'c', long = "config")]
pub config: Option<String>,
#[clap(short = 'v', long = "verbose")]
pub verbose: bool,
}
impl Runnable for DetectCommand {
fn run(&self) {
let devices = Devices::detect(Default::default()).unwrap_or_else(|e| {
status_err!("couldn't detect USB devices: {}", e);
process::exit(1);
});
if devices.is_empty() {
status_err!("no YubiHSM2 devices detected!");
process::exit(1);
}
println!("Detected YubiHSM2 USB devices:");
for device in devices.iter() {
println!(
"- Serial #{} (bus {})",
device.serial_number,
device.bus_number(),
);
}
}
}