#[cfg(feature = "next")]
mod next;
#[cfg(feature = "frameworks")]
mod shuttle_main;
use proc_macro::TokenStream;
use proc_macro_error::proc_macro_error;
#[cfg(feature = "frameworks")]
#[proc_macro_error]
#[proc_macro_attribute]
pub fn main(attr: TokenStream, item: TokenStream) -> TokenStream {
shuttle_main::r#impl(attr, item)
}
#[cfg(feature = "next")]
#[proc_macro_error]
#[proc_macro]
pub fn app(item: TokenStream) -> TokenStream {
use next::App;
use syn::{parse_macro_input, File};
let mut file = parse_macro_input!(item as File);
let app = App::from_file(&mut file);
let bindings = next::wasi_bindings(app);
quote::quote!(
#file
#bindings
)
.into()
}