From f160ba41b54c2ebc092b595052eb62fd4d57f905 Mon Sep 17 00:00:00 2001 From: Ravi kumar Veeramally Date: Thu, 21 Sep 2023 18:35:44 +0300 Subject: [PATCH] vhost_user_blk: switch to clap Signed-off-by: Ravi kumar Veeramally --- Cargo.lock | 2 +- vhost_user_block/Cargo.toml | 2 +- vhost_user_block/src/lib.rs | 5 +++++ vhost_user_block/src/main.rs | 41 +++++++++++++----------------------- 4 files changed, 22 insertions(+), 28 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index d605589a9..aa528f7ba 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2309,8 +2309,8 @@ dependencies = [ name = "vhost_user_block" version = "0.1.0" dependencies = [ - "argh", "block", + "clap", "env_logger", "epoll", "libc", diff --git a/vhost_user_block/Cargo.toml b/vhost_user_block/Cargo.toml index f952e6ec1..1286f5b89 100644 --- a/vhost_user_block/Cargo.toml +++ b/vhost_user_block/Cargo.toml @@ -6,7 +6,7 @@ edition = "2021" build = "../build.rs" [dependencies] -argh = "0.1.9" +clap = { version = "4.3.11", features = ["wrap_help","cargo"] } block = { path = "../block" } env_logger = "0.10.0" epoll = "4.3.3" diff --git a/vhost_user_block/src/lib.rs b/vhost_user_block/src/lib.rs index b50063b9a..3e7d11628 100644 --- a/vhost_user_block/src/lib.rs +++ b/vhost_user_block/src/lib.rs @@ -74,6 +74,11 @@ enum Error { SocketParameterMissing, } +pub const SYNTAX: &str = "vhost-user-block backend parameters \ + \"path=,socket=,num_queues=,\ + queue_size=,readonly=true|false,direct=true|false,\ + poll_queue=true|false\""; + impl fmt::Display for Error { fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { write!(f, "vhost_user_block_error: {self:?}") diff --git a/vhost_user_block/src/main.rs b/vhost_user_block/src/main.rs index 626dbd9ce..2d7d68556 100644 --- a/vhost_user_block/src/main.rs +++ b/vhost_user_block/src/main.rs @@ -10,36 +10,25 @@ extern crate vhost_user_block; -use argh::FromArgs; +use clap::{Arg, Command}; use vhost_user_block::start_block_backend; -#[derive(FromArgs)] -/// Launch a vhost-user-blk backend. -struct TopLevel { - #[argh(option, long = "block-backend")] - /// vhost-user-block backend parameters - /// path=,socket=,num_queues=,queue_size=,readonly=true|false,direct=true|false,poll_queue=true|false - backend_command: Option, - - #[argh(switch, short = 'V', long = "version")] - /// print version information - version: bool, -} - fn main() { env_logger::init(); - let toplevel: TopLevel = argh::from_env(); + let cmd_arguments = Command::new("vhost-user-blk backend") + .version(env!("CARGO_PKG_VERSION")) + .author(env!("CARGO_PKG_AUTHORS")) + .about("Launch a vhost-user-blk backend.") + .arg( + Arg::new("block-backend") + .long("block-backend") + .help(vhost_user_block::SYNTAX) + .num_args(1) + .required(true), + ) + .get_matches(); - if toplevel.version { - println!("{} {}", env!("CARGO_BIN_NAME"), env!("BUILD_VERSION")); - return; - } - - if toplevel.backend_command.is_none() { - println!("Please specify --block-backend"); - std::process::exit(1) - } - - start_block_backend(&toplevel.backend_command.unwrap()); + let backend_command = cmd_arguments.get_one::("block-backend").unwrap(); + start_block_backend(backend_command); }