use std::path::PathBuf;
use unc_abi_client_impl::{generate_abi_client, read_abi};
#[proc_macro]
pub fn generate(tokens: proc_macro::TokenStream) -> proc_macro::TokenStream {
let abi_def = syn::parse_macro_input!(tokens as AbiDef);
let unc_abi = read_abi(PathBuf::from(&abi_def.path.value()));
generate_abi_client(unc_abi, abi_def.name).into()
}
struct AbiDef {
name: syn::Ident,
path: syn::LitStr,
}
impl syn::parse::Parse for AbiDef {
fn parse(input: syn::parse::ParseStream<'_>) -> syn::Result<Self> {
let name = input.parse::<syn::Ident>()?;
input.parse::<syn::Token![for]>()?;
let path = input.parse()?;
Ok(AbiDef { name, path })
}
}