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}