use crate::api::ApiV1;
use std::sync::OnceLock;
static CURRENT_CONTEXT: OnceLock<WSLContext> = OnceLock::new();
#[derive(Debug)]
pub struct WSLContext {
pub api: &'static ApiV1,
}
impl WSLContext {
#[inline]
pub fn get_current() -> Option<&'static Self> {
CURRENT_CONTEXT.get()
}
#[expect(clippy::expect_used)]
#[must_use]
#[inline]
pub fn get_current_or_panic() -> &'static Self {
Self::get_current().expect("WSL context is not initialised.")
}
#[inline]
pub fn init(api: &'static ApiV1) -> Option<&'static Self> {
CURRENT_CONTEXT.set(Self { api }).ok()?;
CURRENT_CONTEXT.get()
}
}