rew_core/
logger.rs

1use colored::*;
2use std::sync::atomic::{AtomicBool, Ordering};
3
4static VERBOSE: AtomicBool = AtomicBool::new(false);
5
6pub fn set_verbose(verbose: bool) {
7  VERBOSE.store(verbose, Ordering::Relaxed);
8}
9
10fn get_symbol(name: &str) -> &str {
11  match name {
12    "info" => "",
13    "types" => "",
14    "warn" => "",
15    "file" => "",
16    "folder" => "",
17    "err" => "",
18    "suc" => "",
19    "question" => "",
20    "package" => "",
21    "git" => "󰊢",
22    "github" => "",
23    "download" => "",
24    "build" => "",
25    "terminal" => "",
26    _ => "",
27  }
28}
29
30pub fn info(message: &str) {
31  let symbol = get_symbol("info").blue();
32  println!("{} {}", symbol, message);
33}
34
35pub fn warn(message: &str) {
36  let symbol = get_symbol("warn").yellow();
37  let warn_text = " WARN ".black().on_yellow();
38  println!("{} {} {}", symbol, warn_text, message.yellow());
39}
40
41pub fn error(message: &str) {
42  let symbol = get_symbol("err").red();
43  let err_text = " ERROR ".black().on_red();
44  println!("{} {} {}", symbol, err_text, message.red());
45}
46
47pub fn verbose(message: &str) {
48  if VERBOSE.load(Ordering::Relaxed) {
49    let symbol = get_symbol("terminal").dimmed();
50    println!("{} {}", symbol, message);
51  }
52}