From 8ac682531b02f8f73ae8cb956b307ad075bc92f0 Mon Sep 17 00:00:00 2001 From: ryan Date: Tue, 12 Sep 2023 00:58:08 -0500 Subject: [PATCH] keyfork-seed: use clap::Parser --- keyfork-seed/Cargo.toml | 2 +- keyfork-seed/src/cli.rs | 33 +++++++++++++++++---------------- keyfork-seed/src/main.rs | 12 +++--------- 3 files changed, 21 insertions(+), 26 deletions(-) diff --git a/keyfork-seed/Cargo.toml b/keyfork-seed/Cargo.toml index 5829ee5..8d0df7a 100644 --- a/keyfork-seed/Cargo.toml +++ b/keyfork-seed/Cargo.toml @@ -7,7 +7,7 @@ edition = "2021" [dependencies] bincode = { version = "1.3.3", default-features = false } -clap = { version = "4.4.2", default-features = false, features = ["std", "usage", "help"] } +clap = { version = "4.4.2", default-features = false, features = ["std", "usage", "help", "derive"] } keyfork-derive-util = { version = "0.1.0", path = "../keyfork-derive-util" } keyfork-frame = { version = "0.1.0", path = "../keyfork-frame", default-features = false } thiserror = "1.0.48" diff --git a/keyfork-seed/src/cli.rs b/keyfork-seed/src/cli.rs index fa0570f..4ba6186 100644 --- a/keyfork-seed/src/cli.rs +++ b/keyfork-seed/src/cli.rs @@ -1,19 +1,20 @@ -use clap::{arg, value_parser, ArgMatches, Command}; +use clap::Parser; use keyfork_derive_util::{request::*, DerivationPath}; +use crate::client::Client; -pub fn get_args() -> ArgMatches { - Command::new("keyfork-seed") - .arg( - arg!(--path ) - .required(true) - .help("string value of a DerivationPath") - .value_parser(value_parser!(DerivationPath)), - ) - .arg( - arg!(--algorithm ) - .required(true) - .help("string value of a DerivationAlgorithm") - .value_parser(value_parser!(DerivationAlgorithm)), - ) - .get_matches() +#[derive(Parser, Clone, Debug)] +pub struct Command { + #[arg(long)] + pub path: DerivationPath, + + #[arg(long)] + pub algorithm: DerivationAlgorithm, +} + +impl Command { + pub fn handle(&self) -> super::Result { + let mut client = Client::discover_socket()?; + let request = DerivationRequest::new(self.algorithm.clone(), self.path.clone()); + client.request(&request) + } } diff --git a/keyfork-seed/src/main.rs b/keyfork-seed/src/main.rs index 63a51e3..fd2b723 100644 --- a/keyfork-seed/src/main.rs +++ b/keyfork-seed/src/main.rs @@ -1,4 +1,4 @@ -use keyfork_derive_util::{request::{DerivationRequest, DerivationAlgorithm}, DerivationPath}; +use clap::Parser; #[cfg(test)] mod tests; @@ -6,14 +6,8 @@ mod tests; use keyfork_seed::*; fn main() -> Result<()> { - let args = cli::get_args(); - let mut client = Client::discover_socket()?; - let path = args.get_one::("path").expect("required"); - let algo = args - .get_one::("algorithm") - .expect("required"); - let request = DerivationRequest::new(algo.clone(), path.clone()); - let response = client.request(&request)?; + let args = cli::Command::parse(); + let response = args.handle()?; dbg!(&response); Ok(()) }