@@ -21,6 +21,7 @@ use std::convert::TryInto;
2121use async_std:: prelude:: * ;
2222use codec:: { Decode , Encode } ;
2323use futures:: { select, FutureExt } ;
24+ use rbtag:: BuildInfo ;
2425use signal_hook:: consts:: * ;
2526use signal_hook_async_std:: Signals ;
2627use structopt:: { clap:: arg_enum, StructOpt } ;
@@ -254,17 +255,30 @@ pub struct PrometheusParams {
254255 pub prometheus_port : u16 ,
255256}
256257
257- impl From < PrometheusParams > for relay_utils:: metrics:: MetricsParams {
258- fn from ( cli_params : PrometheusParams ) -> relay_utils:: metrics:: MetricsParams {
259- if !cli_params. no_prometheus {
258+ /// Struct to get git commit info and build time.
259+ #[ derive( BuildInfo ) ]
260+ struct SubstrateRelayBuildInfo ;
261+
262+ impl PrometheusParams {
263+ /// Tries to convert CLI metrics params into metrics params, used by the relay.
264+ pub fn into_metrics_params ( self ) -> anyhow:: Result < relay_utils:: metrics:: MetricsParams > {
265+ let metrics_address = if !self . no_prometheus {
260266 Some ( relay_utils:: metrics:: MetricsAddress {
261- host : cli_params . prometheus_host ,
262- port : cli_params . prometheus_port ,
267+ host : self . prometheus_host ,
268+ port : self . prometheus_port ,
263269 } )
264- . into ( )
265270 } else {
266- None . into ( )
267- }
271+ None
272+ } ;
273+
274+ let relay_version = option_env ! ( "CARGO_PKG_VERSION" ) . unwrap_or ( "unknown" ) ;
275+ let relay_commit = SubstrateRelayBuildInfo . get_build_commit ( ) ;
276+ relay_utils:: metrics:: MetricsParams :: new (
277+ metrics_address,
278+ relay_version. into ( ) ,
279+ relay_commit. into ( ) ,
280+ )
281+ . map_err ( |e| anyhow:: format_err!( "{:?}" , e) )
268282 }
269283}
270284
0 commit comments