syncable-cli 0.37.1

A Rust-based CLI that analyzes code repositories and generates Infrastructure as Code configurations
Documentation
mod client;
mod config;
mod user;

#[cfg(test)]
mod test;

pub use client::TelemetryClient;
pub use config::TelemetryConfig;
pub use user::UserId;

use crate::config::types::Config;
use std::sync::OnceLock;

static TELEMETRY_CLIENT: OnceLock<TelemetryClient> = OnceLock::new();

pub async fn init_telemetry(config: &Config) -> Result<(), Box<dyn std::error::Error>> {
    let telemetry_enabled = config.telemetry.enabled
        && std::env::var("SYNCABLE_CLI_TELEMETRY").unwrap_or_default() != "false";

    if telemetry_enabled {
        let client = TelemetryClient::new(config).await?;
        TELEMETRY_CLIENT
            .set(client)
            .map_err(|_| "Failed to set telemetry client")?;
    }

    Ok(())
}

pub fn get_telemetry_client() -> Option<&'static TelemetryClient> {
    TELEMETRY_CLIENT.get()
}