From 6add96a2c4eed26f132828320fef5e09e0708a52 Mon Sep 17 00:00:00 2001 From: FroVolod Date: Sat, 19 Feb 2022 21:04:44 +0200 Subject: [PATCH] added attr `skip_default_from_cli_arg` --- ...=> fields_without_skip_default_from_cli_arg.rs} | 4 ++-- .../methods/get_arg_from_cli_for_struct.rs | 14 ++++++-------- .../derives/interactive_clap/methods/input_arg.rs | 5 +---- .../src/derives/interactive_clap/methods/mod.rs | 2 +- .../src/derives/interactive_clap/mod.rs | 2 +- 5 files changed, 11 insertions(+), 16 deletions(-) rename interactive_clap_derive/src/derives/interactive_clap/methods/{fields_without_skip_default_from_cli.rs => fields_without_skip_default_from_cli_arg.rs} (88%) diff --git a/interactive_clap_derive/src/derives/interactive_clap/methods/fields_without_skip_default_from_cli.rs b/interactive_clap_derive/src/derives/interactive_clap/methods/fields_without_skip_default_from_cli_arg.rs similarity index 88% rename from interactive_clap_derive/src/derives/interactive_clap/methods/fields_without_skip_default_from_cli.rs rename to interactive_clap_derive/src/derives/interactive_clap/methods/fields_without_skip_default_from_cli_arg.rs index 415e994..fd93841 100644 --- a/interactive_clap_derive/src/derives/interactive_clap/methods/fields_without_skip_default_from_cli.rs +++ b/interactive_clap_derive/src/derives/interactive_clap/methods/fields_without_skip_default_from_cli_arg.rs @@ -4,7 +4,7 @@ use proc_macro_error::abort_call_site; use quote::quote; use syn; -pub fn is_field_without_skip_default_from_cli(field: &syn::Field) -> bool { +pub fn is_field_without_skip_default_from_cli_arg(field: &syn::Field) -> bool { if field.attrs.is_empty() { return true; } @@ -16,7 +16,7 @@ pub fn is_field_without_skip_default_from_cli(field: &syn::Field) -> bool { .flatten() .filter(|attr_token| match attr_token { proc_macro2::TokenTree::Group(group) => { - if group.stream().to_string().contains("skip_default_from_cli") { + if group.stream().to_string().contains("skip_default_from_cli_arg") { true } else { false diff --git a/interactive_clap_derive/src/derives/interactive_clap/methods/get_arg_from_cli_for_struct.rs b/interactive_clap_derive/src/derives/interactive_clap/methods/get_arg_from_cli_for_struct.rs index cef39dd..37cce9f 100644 --- a/interactive_clap_derive/src/derives/interactive_clap/methods/get_arg_from_cli_for_struct.rs +++ b/interactive_clap_derive/src/derives/interactive_clap/methods/get_arg_from_cli_for_struct.rs @@ -7,9 +7,6 @@ use syn; pub fn from_cli_arg(ast: &syn::DeriveInput, fields: &syn::Fields) -> Vec { let interactive_clap_attrs_context = super::interactive_clap_attrs_context::InteractiveClapAttrsContext::new(&ast); - if interactive_clap_attrs_context.is_skip_default_from_cli { - return vec![quote!()]; - }; let fields_without_subcommand = fields .iter() @@ -20,10 +17,10 @@ pub fn from_cli_arg(ast: &syn::DeriveInput, fields: &syn::Fields) -> Vec>(); - let fields_without_skip_default_from_cli = fields + let fields_without_skip_default_from_cli_arg = fields .iter() .filter(|field| { - super::fields_without_skip_default_from_cli::is_field_without_skip_default_from_cli( + super::fields_without_skip_default_from_cli_arg::is_field_without_skip_default_from_cli_arg( field, ) }) @@ -42,13 +39,14 @@ pub fn from_cli_arg(ast: &syn::DeriveInput, fields: &syn::Fields) -> Vec>(); - let fields_without_skip_default_from_cli_to_string = - fields_without_skip_default_from_cli + let fields_without_skip_default_from_cli_arg_to_string = + fields_without_skip_default_from_cli_arg .iter() .map(|token_stream| token_stream.to_string()) .collect::>(); if fields_without_subcommand_to_string.contains(&ident_field.to_string()) - & fields_without_skip_default_from_cli_to_string.contains(&ident_field.to_string()) + & fields_without_skip_default_from_cli_arg_to_string + .contains(&ident_field.to_string()) { let fn_from_cli_arg = syn::Ident::new(&format!("from_cli_{}", &ident_field), Span::call_site()); diff --git a/interactive_clap_derive/src/derives/interactive_clap/methods/input_arg.rs b/interactive_clap_derive/src/derives/interactive_clap/methods/input_arg.rs index 922ea03..c942b3e 100644 --- a/interactive_clap_derive/src/derives/interactive_clap/methods/input_arg.rs +++ b/interactive_clap_derive/src/derives/interactive_clap/methods/input_arg.rs @@ -5,15 +5,12 @@ use proc_macro_error::abort_call_site; use quote::{__private::ext::RepToTokensExt, quote}; use syn; -pub fn vec_input_arg( +pub fn vec_fn_input_arg( ast: &syn::DeriveInput, fields: &syn::Fields, ) -> Vec { let interactive_clap_attrs_context = super::interactive_clap_attrs_context::InteractiveClapAttrsContext::new(&ast); - if interactive_clap_attrs_context.is_skip_default_from_cli { - return vec![quote!()]; - }; let vec_fn_input_arg = fields .iter() .filter(|field| super::fields_without_subcommand::is_field_without_subcommand(field)) diff --git a/interactive_clap_derive/src/derives/interactive_clap/methods/mod.rs b/interactive_clap_derive/src/derives/interactive_clap/methods/mod.rs index 4294963..429190f 100644 --- a/interactive_clap_derive/src/derives/interactive_clap/methods/mod.rs +++ b/interactive_clap_derive/src/derives/interactive_clap/methods/mod.rs @@ -1,6 +1,6 @@ pub mod choose_variant; pub mod cli_field_type; -pub mod fields_without_skip_default_from_cli; +pub mod fields_without_skip_default_from_cli_arg; pub mod fields_without_skip_default_input_arg; pub mod fields_without_subcommand; pub mod from_cli_for_enum; diff --git a/interactive_clap_derive/src/derives/interactive_clap/mod.rs b/interactive_clap_derive/src/derives/interactive_clap/mod.rs index 81642a3..b590b0e 100644 --- a/interactive_clap_derive/src/derives/interactive_clap/mod.rs +++ b/interactive_clap_derive/src/derives/interactive_clap/mod.rs @@ -116,7 +116,7 @@ pub fn impl_interactive_clap(ast: &syn::DeriveInput) -> TokenStream { let fn_get_arg = self::methods::get_arg_from_cli_for_struct::from_cli_arg(&ast, &fields); - let vec_fn_input_arg = self::methods::input_arg::vec_input_arg(&ast, &fields); + let vec_fn_input_arg = self::methods::input_arg::vec_fn_input_arg(&ast, &fields); let context_scope_fields = fields .iter()