prometheus_static_metric/
lib.rs1extern crate lazy_static;
26extern crate proc_macro;
27extern crate proc_macro2;
28#[macro_use]
29extern crate quote;
30extern crate syn;
31
32mod auto_flush_builder;
33mod auto_flush_from;
34mod builder;
35mod parser;
36mod register_macro;
37mod util;
38
39use proc_macro::TokenStream;
40
41use self::builder::TokensBuilder;
42use self::parser::StaticMetricMacroBody;
43use self::register_macro::RegisterMethodInvoking;
44use crate::auto_flush_from::AutoFlushFromDef;
45use auto_flush_builder::AutoFlushTokensBuilder;
46
47#[proc_macro]
49pub fn make_static_metric(input: TokenStream) -> TokenStream {
50 let body: StaticMetricMacroBody = syn::parse(input).unwrap();
51 TokensBuilder::build(body).into()
52}
53
54#[proc_macro]
57pub fn make_auto_flush_static_metric(input: TokenStream) -> TokenStream {
58 let body: StaticMetricMacroBody = syn::parse(input).unwrap();
59 AutoFlushTokensBuilder::build(body).into()
60}
61
62#[proc_macro]
64pub fn auto_flush_from(input: TokenStream) -> TokenStream {
65 let def: AutoFlushFromDef = syn::parse(input).unwrap();
66 def.auto_flush_from()
67}
68
69#[proc_macro]
71pub fn register_static_counter_vec(input: TokenStream) -> TokenStream {
72 register_static_vec("counter", input)
73}
74
75#[proc_macro]
77pub fn register_static_int_counter_vec(input: TokenStream) -> TokenStream {
78 register_static_vec("int_counter", input)
79}
80
81#[proc_macro]
83pub fn register_static_gauge_vec(input: TokenStream) -> TokenStream {
84 register_static_vec("gauge", input)
85}
86
87#[proc_macro]
89pub fn register_static_int_gauge_vec(input: TokenStream) -> TokenStream {
90 register_static_vec("int_gauge", input)
91}
92
93#[proc_macro]
95pub fn register_static_histogram_vec(input: TokenStream) -> TokenStream {
96 register_static_vec("histogram", input)
97}
98
99fn register_static_vec(register_type: &str, input: TokenStream) -> TokenStream {
101 let invoking: RegisterMethodInvoking = syn::parse(input).unwrap();
102 invoking.into_tokens(register_type).into()
103}