diff --git a/src/bin/pbs.rs b/src/bin/pbs.rs index c8f2805d..c8027974 100644 --- a/src/bin/pbs.rs +++ b/src/bin/pbs.rs @@ -9,23 +9,19 @@ fn datastore_commands() -> CommandLineInterface { let mut cmd_def = HashMap::::new(); - cmd_def.insert("list".to_owned(), CliCommand { - info: api3::config::datastore::get(), - arg_param: vec![], - fixed_param: vec![], - }.into()); + use apitest::api3::config::datastore; - cmd_def.insert("create".to_owned(), CliCommand { - info: api3::config::datastore::post(), - arg_param: vec!["name", "path"], - fixed_param: vec![], - }.into()); + cmd_def.insert("list".to_owned(), CliCommand::new(datastore::get()).into()); - cmd_def.insert("remove".to_owned(), CliCommand { - info: api3::config::datastore::delete(), - arg_param: vec!["name"], - fixed_param: vec![], - }.into()); + cmd_def.insert("create".to_owned(), + CliCommand::new(datastore::post()) + .arg_param(vec!["name", "path"]) + .into()); + + cmd_def.insert("remove".to_owned(), + CliCommand::new(api3::config::datastore::delete()) + .arg_param(vec!["name"]) + .into()); cmd_def.into() } diff --git a/src/cli/command.rs b/src/cli/command.rs index e08d6855..cdf89977 100644 --- a/src/cli/command.rs +++ b/src/cli/command.rs @@ -99,6 +99,23 @@ pub struct CliCommand { pub fixed_param: Vec<&'static str>, } +impl CliCommand { + + pub fn new(info: ApiMethod) -> Self { + Self { info, arg_param: vec![], fixed_param: vec![] } + } + + pub fn arg_param(mut self, names: Vec<&'static str>) -> Self { + self.arg_param = names; + self + } + + pub fn fixed_param(mut self, args: Vec<&'static str>) -> Self { + self.fixed_param = args; + self + } +} + pub enum CommandLineInterface { Simple(CliCommand), Nested(HashMap),