use proc_macro_crate::{FoundCrate, crate_name};
use proc_macro2::{Span, TokenStream};
use quote::quote;
use syn::Ident;
pub(crate) fn resolve_root() -> TokenStream {
if let Ok(found) = crate_name("rama-http") {
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 quote!(::#ident::http);
}
quote! {
{ compile_error!(
"rama-http-macros could not find rama-http or rama. \
Add a dependency on `rama` (with the `html` feature) \
or `rama-http` (with the `html` feature)."
); }
}
}