rew-core 0.0.67

Core utilities and types for the Rew runtime system
Documentation
use colored::*;
use std::sync::atomic::{AtomicBool, Ordering};

static VERBOSE: AtomicBool = AtomicBool::new(false);

pub fn set_verbose(verbose: bool) {
  VERBOSE.store(verbose, Ordering::Relaxed);
}

fn get_symbol(name: &str) -> &str {
  match name {
    "info" => "",
    "types" => "",
    "warn" => "",
    "file" => "",
    "folder" => "",
    "err" => "",
    "suc" => "",
    "question" => "",
    "package" => "",
    "git" => "󰊢",
    "github" => "",
    "download" => "",
    "build" => "",
    "terminal" => "",
    _ => "",
  }
}

pub fn info(message: &str) {
  let symbol = get_symbol("info").blue();
  println!("{} {}", symbol, message);
}

pub fn warn(message: &str) {
  let symbol = get_symbol("warn").yellow();
  let warn_text = " WARN ".black().on_yellow();
  println!("{} {} {}", symbol, warn_text, message.yellow());
}

pub fn error(message: &str) {
  let symbol = get_symbol("err").red();
  let err_text = " ERROR ".black().on_red();
  println!("{} {} {}", symbol, err_text, message.red());
}

pub fn verbose(message: &str) {
  if VERBOSE.load(Ordering::Relaxed) {
    let symbol = get_symbol("terminal").dimmed();
    println!("{} {}", symbol, message);
  }
}