use clap::{App, SubCommand}; use crate::cmd::arg::{ArgDownloadLimit, ArgOwner, ArgUrl, CmdArg}; /// The params command definition. pub struct CmdParams; impl CmdParams { pub fn build<'a, 'b>() -> App<'a, 'b> { // Create a list of parameter arguments, of which one is required let param_args = [ArgDownloadLimit::name()]; SubCommand::with_name("parameters") .about("Change parameters of a shared file") .visible_alias("params") .alias("param") .alias("parameter") .arg(ArgUrl::build()) .arg(ArgOwner::build()) .arg(ArgDownloadLimit::build().required_unless_one(¶m_args)) } }