use std::sync::{LazyLock, OnceLock};
static COMPILED_SDK_LANGUAGE: LazyLock<String> = LazyLock::new(|| {
option_env!("FOXGLOVE_SDK_LANGUAGE")
.unwrap_or("rust")
.to_string()
});
static CELL: OnceLock<&'static str> = OnceLock::new();
pub fn set_sdk_language(language: &'static str) {
CELL.get_or_init(|| language);
}
pub(crate) fn get_sdk_language() -> &'static str {
CELL.get_or_init(|| COMPILED_SDK_LANGUAGE.as_str())
}
pub(crate) fn get_sdk_version() -> &'static str {
env!("CARGO_PKG_VERSION")
}
pub(crate) fn get_library_version() -> String {
format!("foxglove-sdk-{}/v{}", get_sdk_language(), get_sdk_version())
}