use std::io::IsTerminal;
use std::sync::OnceLock;
use terminal_colorsaurus::{Color, QueryOptions};
#[derive(Clone)]
pub(super) struct DefaultColors {
pub fg: Color,
pub bg: Color,
}
static COLORS: OnceLock<Option<DefaultColors>> = OnceLock::new();
pub(super) fn capture() {
COLORS.get_or_init(|| {
if !std::io::stdin().is_terminal() || !std::io::stdout().is_terminal() {
return None;
}
let palette = terminal_colorsaurus::color_palette(QueryOptions::default()).ok()?;
Some(DefaultColors {
fg: palette.foreground,
bg: palette.background,
})
});
}
pub(super) fn cached() -> Option<DefaultColors> {
COLORS.get().cloned().flatten()
}