use proc_macro_crate::{FoundCrate, crate_name};
use proc_macro2::TokenStream;
use quote::quote;
use syn::Ident;
pub fn aro_core_path() -> TokenStream {
if let Ok(found) = crate_name("aro") {
let ident = found_crate_ident(found);
quote!(#ident::core)
} else if let Ok(found) = crate_name("aro-core") {
let ident = found_crate_ident(found);
quote!(#ident)
} else {
quote!(::aro_core)
}
}
pub fn axum_path() -> TokenStream {
if let Ok(found) = crate_name("aro") {
let ident = found_crate_ident(found);
quote!(#ident::web::axum)
} else if let Ok(found) = crate_name("aro-web") {
let ident = found_crate_ident(found);
quote!(#ident::axum)
} else if let Ok(found) = crate_name("axum") {
let ident = found_crate_ident(found);
quote!(#ident)
} else {
quote!(::axum)
}
}
pub fn fletch_path() -> TokenStream {
if let Ok(found) = crate_name("fletch-orm") {
let ident = found_crate_ident(found);
quote!(#ident)
} else if let Ok(found) = crate_name("aro-fletch") {
let ident = found_crate_ident(found);
quote!(#ident::fletch_orm)
} else if let Ok(found) = crate_name("aro") {
let ident = found_crate_ident(found);
quote!(#ident::fletch::fletch_orm)
} else {
quote!(::fletch_orm)
}
}
fn found_crate_ident(found: FoundCrate) -> TokenStream {
match found {
FoundCrate::Itself => quote!(crate),
FoundCrate::Name(name) => {
let ident = Ident::new(&name, proc_macro2::Span::call_site());
quote!(::#ident)
}
}
}