metacall-inline 0.1.0

Inline macros for metacall crate.
Documentation
use std::env;
use std::fs::File;
use std::io::Write;
use std::path::Path;

fn main() {
    let out_dir = env::var("OUT_DIR").unwrap();
    let dest_path = Path::new(&out_dir).join("inline_gen.rs");
    let mut f = File::create(&dest_path).unwrap();

    let loaders = vec!["py", "node", "ts", "cs", "rb", "cob", "rpc", "java", "wasm"];
    for name in loaders {
        let content = format!("
#[proc_macro]
pub fn {name}(input: TokenStream) -> TokenStream {{
    let token_stream_input = proc_macro2::TokenStream::from(input);
    let buffer = token_stream_input.to_string();

    let result = quote! {{
        if let Err(e) = ::metacall::load_from_memory(\"{name}\", #buffer.to_string()) {{
            panic!(\"{{}}\", e);
        }}
    }};

    result.into()
}}
        ");

        f.write_all(content.as_bytes()).unwrap();
    }
}