use proc_macro_crate::{FoundCrate, crate_name};
use proc_macro2::{Ident, Span, TokenStream};
use quote::quote;
pub(crate) fn support_root_ts(
individual_crate_name: &'static str,
umbrella_module: Option<&'static str>,
) -> TokenStream {
if let Ok(found) = crate_name(individual_crate_name) {
return match found {
FoundCrate::Itself => quote!(crate),
FoundCrate::Name(name) => {
let ident = Ident::new(&name, Span::call_site());
quote!(::#ident)
}
};
}
if let Ok(found) = crate_name("rama") {
let ident = match found {
FoundCrate::Itself => Ident::new("rama", Span::call_site()),
FoundCrate::Name(name) => Ident::new(&name, Span::call_site()),
};
return if let Some(module) = umbrella_module {
let module = Ident::new(module, Span::call_site());
quote!(::#ident::#module)
} else {
quote!(::#ident)
};
}
quote! {
{ compile_error!(
"Add a dependency on `rama` or `{}` to use this macro",
individual_crate_name
); }
}
}