fletch-orm-macros 1.0.0

Procedural macros for the Fletch ORM database toolkit
Documentation
use proc_macro_crate::{FoundCrate, crate_name};
use proc_macro2::TokenStream;
use quote::quote;
use syn::Ident;

/// Returns the path to `fletch-orm` types in the user's crate.
///
/// - If user depends on `fletch-orm`: returns `::fletch_orm`
/// - Fallback: returns `::fletch_orm` (will produce a compile error if missing)
pub fn fletch_path() -> TokenStream {
    if let Ok(found) = crate_name("fletch-orm") {
        found_crate_ident(found)
    } 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)
        }
    }
}