termcinema_cli/render/
theme.rs1use crate::args::CliArgs;
2use crate::style::patch_theme;
3use anyhow::Result;
4use termcinema_engine::{
5 ControlSpec, CursorSpec, StyleSpec, ThemeError, all_presets, resolve_theme,
6};
7
8pub(crate) fn resolve_and_patch_theme(
21 args: &CliArgs,
22 is_script: bool,
23) -> Result<(StyleSpec, CursorSpec, ControlSpec), ThemeError> {
24 let (mut style, mut cursor, mut control) = resolve_theme(args.theme.as_deref())?;
26
27 patch_theme(&mut style, &mut cursor, &mut control, args, is_script);
29
30 Ok((style, cursor, control))
31}
32
33pub(crate) fn print_theme_list() {
37 println!("\x1b[36m\nšØ Built-in themes:\x1b[0m");
38
39 for preset in all_presets() {
40 let slug = preset.name.to_lowercase().replace(' ', "_");
41 println!(" ⢠{:<17} (\"{}\")", preset.name, slug);
42 }
43
44 println!("\nš” Pass a theme using: --theme \"poke_terminal\"");
45
46 println!();
47}
48
49#[allow(dead_code)]
53pub fn available_theme_names() -> Vec<&'static str> {
54 all_presets().into_iter().map(|t| t.name).collect()
55}