|
@@ -1,4 +1,4 @@
|
|
|
-use crate::config::{get as get_config, CliConfig};
|
|
|
+use crate::config::{get as get_config, CliArg, CliConfig};
|
|
|
|
|
|
use clap::{App, Arg, ArgMatches};
|
|
|
use serde::Serialize;
|
|
@@ -59,7 +59,7 @@ pub fn get_matches() -> crate::Result<Matches> {
|
|
|
.tauri
|
|
|
.cli
|
|
|
.as_ref()
|
|
|
- .ok_or(anyhow::anyhow!("CLI configuration not defined"))?;
|
|
|
+ .ok_or_else(|| anyhow::anyhow!("CLI configuration not defined"))?;
|
|
|
|
|
|
let about = cli
|
|
|
.description()
|
|
@@ -138,36 +138,7 @@ fn get_app<'a>(name: &str, about: Option<&'a String>, config: &'a CliConfig) ->
|
|
|
if let Some(args) = config.args() {
|
|
|
for arg in args {
|
|
|
let arg_name = arg.name.as_ref();
|
|
|
- let mut clap_arg = Arg::new(arg_name).long(arg_name);
|
|
|
-
|
|
|
- if let Some(short) = arg.short {
|
|
|
- clap_arg = clap_arg.short(short);
|
|
|
- }
|
|
|
-
|
|
|
- clap_arg = bind_string_arg!(arg, clap_arg, description, about);
|
|
|
- clap_arg = bind_string_arg!(arg, clap_arg, long_description, long_about);
|
|
|
- clap_arg = bind_value_arg!(arg, clap_arg, takes_value);
|
|
|
- clap_arg = bind_value_arg!(arg, clap_arg, multiple);
|
|
|
- clap_arg = bind_value_arg!(arg, clap_arg, multiple_occurrences);
|
|
|
- clap_arg = bind_value_arg!(arg, clap_arg, number_of_values);
|
|
|
- clap_arg = bind_string_slice_arg!(arg, clap_arg, possible_values);
|
|
|
- clap_arg = bind_value_arg!(arg, clap_arg, min_values);
|
|
|
- clap_arg = bind_value_arg!(arg, clap_arg, max_values);
|
|
|
- clap_arg = bind_string_arg!(arg, clap_arg, required_unless, required_unless);
|
|
|
- clap_arg = bind_value_arg!(arg, clap_arg, required);
|
|
|
- clap_arg = bind_string_arg!(arg, clap_arg, required_unless, required_unless);
|
|
|
- clap_arg = bind_string_slice_arg!(arg, clap_arg, required_unless_all);
|
|
|
- clap_arg = bind_string_slice_arg!(arg, clap_arg, required_unless_one);
|
|
|
- clap_arg = bind_string_arg!(arg, clap_arg, conflicts_with, conflicts_with);
|
|
|
- clap_arg = bind_string_slice_arg!(arg, clap_arg, conflicts_with_all);
|
|
|
- clap_arg = bind_string_arg!(arg, clap_arg, requires, requires);
|
|
|
- clap_arg = bind_string_slice_arg!(arg, clap_arg, requires_all);
|
|
|
- clap_arg = bind_if_arg!(arg, clap_arg, requires_if);
|
|
|
- clap_arg = bind_if_arg!(arg, clap_arg, required_if);
|
|
|
- clap_arg = bind_value_arg!(arg, clap_arg, require_equals);
|
|
|
- clap_arg = bind_value_arg!(arg, clap_arg, index);
|
|
|
-
|
|
|
- app = app.arg(clap_arg);
|
|
|
+ app = app.arg(get_arg(arg_name, &arg));
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -180,3 +151,36 @@ fn get_app<'a>(name: &str, about: Option<&'a String>, config: &'a CliConfig) ->
|
|
|
|
|
|
app
|
|
|
}
|
|
|
+
|
|
|
+fn get_arg<'a>(arg_name: &'a str, arg: &'a CliArg) -> Arg<'a> {
|
|
|
+ let mut clap_arg = Arg::new(arg_name).long(arg_name);
|
|
|
+
|
|
|
+ if let Some(short) = arg.short {
|
|
|
+ clap_arg = clap_arg.short(short);
|
|
|
+ }
|
|
|
+
|
|
|
+ clap_arg = bind_string_arg!(arg, clap_arg, description, about);
|
|
|
+ clap_arg = bind_string_arg!(arg, clap_arg, long_description, long_about);
|
|
|
+ clap_arg = bind_value_arg!(arg, clap_arg, takes_value);
|
|
|
+ clap_arg = bind_value_arg!(arg, clap_arg, multiple);
|
|
|
+ clap_arg = bind_value_arg!(arg, clap_arg, multiple_occurrences);
|
|
|
+ clap_arg = bind_value_arg!(arg, clap_arg, number_of_values);
|
|
|
+ clap_arg = bind_string_slice_arg!(arg, clap_arg, possible_values);
|
|
|
+ clap_arg = bind_value_arg!(arg, clap_arg, min_values);
|
|
|
+ clap_arg = bind_value_arg!(arg, clap_arg, max_values);
|
|
|
+ clap_arg = bind_string_arg!(arg, clap_arg, required_unless, required_unless);
|
|
|
+ clap_arg = bind_value_arg!(arg, clap_arg, required);
|
|
|
+ clap_arg = bind_string_arg!(arg, clap_arg, required_unless, required_unless);
|
|
|
+ clap_arg = bind_string_slice_arg!(arg, clap_arg, required_unless_all);
|
|
|
+ clap_arg = bind_string_slice_arg!(arg, clap_arg, required_unless_one);
|
|
|
+ clap_arg = bind_string_arg!(arg, clap_arg, conflicts_with, conflicts_with);
|
|
|
+ clap_arg = bind_string_slice_arg!(arg, clap_arg, conflicts_with_all);
|
|
|
+ clap_arg = bind_string_arg!(arg, clap_arg, requires, requires);
|
|
|
+ clap_arg = bind_string_slice_arg!(arg, clap_arg, requires_all);
|
|
|
+ clap_arg = bind_if_arg!(arg, clap_arg, requires_if);
|
|
|
+ clap_arg = bind_if_arg!(arg, clap_arg, required_if);
|
|
|
+ clap_arg = bind_value_arg!(arg, clap_arg, require_equals);
|
|
|
+ clap_arg = bind_value_arg!(arg, clap_arg, index);
|
|
|
+
|
|
|
+ clap_arg
|
|
|
+}
|