extern crate proc_macro;
use proc_macro::TokenStream;
use syn::parse_macro_input;
mod attributes;
mod codegen;
mod errors;
mod pipeline;
#[proc_macro_derive(Pipeline, attributes(pipeline))]
pub fn pipeline_derive_macro(input: TokenStream) -> TokenStream {
let input = parse_macro_input!(input as syn::DeriveInput);
let attrs = match attributes::parse_attributes(&input) {
Ok(a) => a,
Err(err) => return err.to_compile_error().into(),
};
match pipeline::pipeline_derive(input, &attrs) {
Ok(tokens) => tokens.into(),
Err(err) => err.to_compile_error().into(),
}
}