diff --git a/interactive-clap-derive/src/derives/interactive_clap/mod.rs b/interactive-clap-derive/src/derives/interactive_clap/mod.rs index 0dae9d3..6a07ef7 100644 --- a/interactive-clap-derive/src/derives/interactive_clap/mod.rs +++ b/interactive-clap-derive/src/derives/interactive_clap/mod.rs @@ -189,13 +189,17 @@ pub fn impl_interactive_clap(ast: &syn::DeriveInput) -> TokenStream { impl #name { #(#vec_fn_input_arg)* - fn try_parse() -> Result<#cli_name, clap::Error> { + pub fn try_parse() -> Result<#cli_name, clap::Error> { <#cli_name as clap::Parser>::try_parse() } - fn parse() -> #cli_name { + pub fn parse() -> #cli_name { <#cli_name as clap::Parser>::parse() } + + pub fn try_parse_from(s: &str) -> Result<#cli_name, clap::Error> { + <#cli_name as clap::Parser>::try_parse_from(s.split(" ")) + } } impl From<#name> for #cli_name { @@ -324,13 +328,17 @@ pub fn impl_interactive_clap(ast: &syn::DeriveInput) -> TokenStream { impl #name { #fn_choose_variant - fn try_parse() -> Result<#cli_name, clap::Error> { + pub fn try_parse() -> Result<#cli_name, clap::Error> { <#cli_name as clap::Parser>::try_parse() } - fn parse() -> #cli_name { + pub fn parse() -> #cli_name { <#cli_name as clap::Parser>::parse() } + + pub fn try_parse_from(s: &str) -> Result<#cli_name, clap::Error> { + <#cli_name as clap::Parser>::try_parse_from(s.split(" ")) + } } } }