1use proc_macro2::Ident;
2use syn::{DeriveInput, Field, Type, Visibility};
3
4pub fn add_bolt_metadata(input: &mut DeriveInput) {
5 let authority_field: Field = Field {
6 attrs: vec![],
7 vis: Visibility::Public(syn::VisPublic {
8 pub_token: Default::default(),
9 }),
10 ident: Some(Ident::new("bolt_metadata", proc_macro2::Span::call_site())),
11 colon_token: Some(Default::default()),
12 ty: Type::Path(syn::TypePath {
13 qself: None,
14 path: syn::Path::from(Ident::new("BoltMetadata", proc_macro2::Span::call_site())),
15 }),
16 };
17 if let syn::Data::Struct(ref mut data) = input.data {
18 if let syn::Fields::Named(ref mut fields) = data.fields {
19 fields.named.push(authority_field);
20 }
21 }
22}