use crate::args::CliArgs;
use crate::style::patch_theme;
use anyhow::Result;
use termcinema_engine::{
ControlSpec, CursorSpec, StyleSpec, ThemeError, all_presets, resolve_theme,
};
pub(crate) fn resolve_and_patch_theme(
args: &CliArgs,
is_script: bool,
) -> Result<(StyleSpec, CursorSpec, ControlSpec), ThemeError> {
let (mut style, mut cursor, mut control) = resolve_theme(args.theme.as_deref())?;
patch_theme(&mut style, &mut cursor, &mut control, args, is_script);
Ok((style, cursor, control))
}
pub(crate) fn print_theme_list() {
println!("\x1b[36m\n🎨 Built-in themes:\x1b[0m");
for preset in all_presets() {
let slug = preset.name.to_lowercase().replace(' ', "_");
println!(" • {:<17} (\"{}\")", preset.name, slug);
}
println!("\n💡 Pass a theme using: --theme \"poke_terminal\"");
println!();
}
#[allow(dead_code)]
pub fn available_theme_names() -> Vec<&'static str> {
all_presets().into_iter().map(|t| t.name).collect()
}