rfs-runner 0.1.4

A simple UI Progress
Documentation
use std::fmt;

use colored::Colorize;

pub fn limit_string(max: usize, input: impl ToString, pad: impl Into<Option<char>>) -> String {
  let input = input.to_string();
  let pad = pad.into().unwrap_or(' ');

  let truncated: String = input.chars().take(max).collect();
  let pad_len = max.saturating_sub(truncated.chars().count());

  truncated + &pad.to_string().repeat(pad_len)
}

pub fn line_err(error: impl ToString) -> String {
  format!("[{}] {}", dt_now_rfc2822(), error.to_string().red())
}

pub fn line_ok(info: impl fmt::Display) -> String {
  format!("[{}] {info}", dt_now_rfc2822())
}

pub fn dt_now_rfc2822() -> impl fmt::Display {
  chrono::Local::now().to_rfc2822().dimmed()
}