Skip to main content

CommonLibrary/Telemetry/
Initialize.rs

1#![allow(non_snake_case)]
2
3//! Sidecar boot. Idempotent: subsequent calls are no-ops because
4//! `OnceLock::set` returns `Err`. Pass the `Tier` so every emitted
5//! event is tagged correctly without per-call boilerplate.
6//!
7//! Usage:
8//! ```ignore
9//! use CommonLibrary::Telemetry::{Initialize, Tier};
10//!
11//! #[tokio::main]
12//! async fn main() {
13//!     Initialize::Fn(Tier::Tier::Air).await;
14//!     // ... rest of sidecar boot ...
15//! }
16//! ```
17
18use crate::Telemetry::{CaptureSession, Client, IsAllowed, Tier};
19
20pub async fn Fn(Tier:Tier::Tier) {
21	let _ = Client::TIER.set(Tier);
22
23	if !IsAllowed::PostHog() {
24		return;
25	}
26
27	let Configuration = IsAllowed::Cached();
28	let Options = match posthog_rs::ClientOptionsBuilder::default()
29		.api_key(Configuration.Key.clone())
30		.host(Configuration.Host.clone())
31		.build()
32	{
33		Ok(O) => O,
34		Err(_) => return,
35	};
36
37	let PostHogClient = posthog_rs::client(Options).await;
38	let _ = Client::CLIENT.set(PostHogClient);
39
40	CaptureSession::Fn();
41}