From 54e9ed9932a479e7d4548306113a6d98a8d6ba15 Mon Sep 17 00:00:00 2001 From: Wei Liu Date: Thu, 12 Jan 2023 15:53:51 +0000 Subject: [PATCH] vhost_user_blk: switch to argh Signed-off-by: Wei Liu --- Cargo.lock | 2 +- vhost_user_block/Cargo.toml | 2 +- vhost_user_block/src/lib.rs | 5 ----- vhost_user_block/src/main.rs | 27 ++++++++++++--------------- 4 files changed, 14 insertions(+), 22 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 612d9f938..27db7a7f8 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1417,8 +1417,8 @@ dependencies = [ name = "vhost_user_block" version = "0.1.0" dependencies = [ + "argh", "block_util", - "clap", "env_logger", "epoll", "libc", diff --git a/vhost_user_block/Cargo.toml b/vhost_user_block/Cargo.toml index 0d1ab834a..32546e7ce 100644 --- a/vhost_user_block/Cargo.toml +++ b/vhost_user_block/Cargo.toml @@ -5,8 +5,8 @@ authors = ["The Cloud Hypervisor Authors"] edition = "2021" [dependencies] +argh = "0.1.9" block_util = { path = "../block_util" } -clap = { version = "4.0.32", features = ["wrap_help"] } env_logger = "0.10.0" epoll = "4.3.1" libc = "0.2.139" diff --git a/vhost_user_block/src/lib.rs b/vhost_user_block/src/lib.rs index a5286e03d..738b681dc 100644 --- a/vhost_user_block/src/lib.rs +++ b/vhost_user_block/src/lib.rs @@ -70,11 +70,6 @@ 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 2d7d68556..2e3885683 100644 --- a/vhost_user_block/src/main.rs +++ b/vhost_user_block/src/main.rs @@ -10,25 +10,22 @@ extern crate vhost_user_block; -use clap::{Arg, Command}; +use argh::FromArgs; 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: String, +} + fn main() { env_logger::init(); - 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(); + let toplevel: TopLevel = argh::from_env(); - let backend_command = cmd_arguments.get_one::("block-backend").unwrap(); - start_block_backend(backend_command); + start_block_backend(&toplevel.backend_command); }