interactive_clap_derive/
lib.rs1extern crate proc_macro;
2
3use proc_macro::TokenStream;
4use proc_macro_error::proc_macro_error;
5
6#[macro_use]
7mod debug;
8
9mod derives;
10mod helpers;
11#[cfg(test)]
12mod tests;
13
14pub(crate) const LONG_VEC_MUTLIPLE_OPT: &str = "long_vec_multiple_opt";
21
22pub(crate) const VERBATIM_DOC_COMMENT: &str = "verbatim_doc_comment";
26
27#[proc_macro_derive(InteractiveClap, attributes(interactive_clap))]
28#[proc_macro_error]
29pub fn interactive_clap(input: TokenStream) -> TokenStream {
30 let ast = syn::parse_macro_input!(input);
31 derives::interactive_clap::impl_interactive_clap(&ast).into()
32}
33
34#[proc_macro_derive(ToCliArgs, attributes(to_cli_args))]
35#[proc_macro_error]
36pub fn to_cli_args(input: TokenStream) -> TokenStream {
37 let ast = syn::parse_macro_input!(input);
38 derives::to_cli_args::impl_to_cli_args(&ast).into()
39}