syncable_cli/telemetry/
mod.rs1mod client;
2mod config;
3mod user;
4
5#[cfg(test)]
6mod test;
7
8pub use client::TelemetryClient;
9pub use config::TelemetryConfig;
10pub use user::UserId;
11
12use crate::config::types::Config;
13use std::sync::OnceLock;
14
15static TELEMETRY_CLIENT: OnceLock<TelemetryClient> = OnceLock::new();
16
17pub async fn init_telemetry(config: &Config) -> Result<(), Box<dyn std::error::Error>> {
18 let telemetry_enabled = config.telemetry.enabled
19 && std::env::var("SYNCABLE_CLI_TELEMETRY").unwrap_or_default() != "false";
20
21 if telemetry_enabled {
22 let client = TelemetryClient::new(config).await?;
23 TELEMETRY_CLIENT
24 .set(client)
25 .map_err(|_| "Failed to set telemetry client")?;
26 }
27
28 Ok(())
29}
30
31pub fn get_telemetry_client() -> Option<&'static TelemetryClient> {
32 TELEMETRY_CLIENT.get()
33}