use std::io;
use termcolor::WriteColor;
use crate::Banner;
pub struct ColorConfig {
pub rainbow_palette: Option<Vec<anstyle::Color>>,
}
pub fn write_banner<W: WriteColor>(
banner: &Banner,
color: Option<&ColorConfig>,
writer: &mut W,
) -> io::Result<()> {
for line in banner.lines() {
match color {
Some(cfg) if cfg.rainbow_palette.is_some() => {
let palette = cfg
.rainbow_palette
.as_deref()
.expect("just-checked is_some");
crate::color::write_rainbow_line(&line, palette, writer)?;
}
_ => {
writeln!(writer, "{line}")?;
}
}
}
Ok(())
}