Skip to main content

jessie_macros/
lib.rs

1use proc_macro::TokenStream;
2use quote::quote;
3use syn::{ItemFn, parse_macro_input};
4
5#[proc_macro_attribute]
6pub fn app(_attr: TokenStream, item: TokenStream) -> TokenStream {
7    let fn_body = parse_macro_input!(item as ItemFn);
8
9    let vis = &fn_body.vis;
10
11    let fn_name = &fn_body.sig.ident;
12
13    let output = quote! {
14        include!(concat!(env!("OUT_DIR"),"/appinfo.rs"));
15
16        #fn_body
17
18        #vis fn main() {
19            jessie_lib::run(APP_INFO,#fn_name());
20
21        }
22    };
23
24    output.into()
25}