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}