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\" }}`"
),
)),
}
}