tonlib-tlb-derive 0.1.0

Derive macro for tonlib-core TLB types
Documentation
use proc_macro2::TokenStream;
use proc_macro_crate::{crate_name, FoundCrate};
use quote::{format_ident, quote};
use syn::Error;

pub(crate) fn resolve_tonlib_core_path() -> syn::Result<TokenStream> {
    match crate_name("tonlib-core") {
        Ok(FoundCrate::Itself) => Ok(quote!(crate)),
        Ok(FoundCrate::Name(name)) => {
            let ident = format_ident!("{name}");
            Ok(quote!(#ident))
        }
        Err(error) => Err(Error::new(
            proc_macro2::Span::call_site(),
            format!(
                "failed to locate the `tonlib-core` dependency: {error}. \
                 `#[derive(TLB)]` requires the deriving crate to depend on `tonlib-core`, \
                 for example `tonlib-core = \"0.25\"` or \
                 `tl_core = {{ package = \"tonlib-core\", version = \"0.25\" }}`"
            ),
        )),
    }
}