databoxer 0.1.0-rc.1

Fast and easy to use CLI-based file encryption program
Documentation
#[derive(PartialEq)]
pub enum LogType {
    INFO,
    STATUS,
    SUCCESS,
    WARN,
    ERROR,
    DEBUG,
}

impl LogType {
    pub fn icon<'a>(&self) -> &'a str {
        match self {
            LogType::INFO => "i",
            LogType::STATUS => "*",
            LogType::SUCCESS => "+",
            LogType::WARN => "!",
            LogType::ERROR => "-",
            LogType::DEBUG => "d"
        }
    }
}

#[macro_export]
macro_rules! log {
    ($log_type:ident: $($arg:tt)*) => {
        {
            use crate::core::logs::LogType::*;
            match crate::app::get_app_mode() {
                AppMode::CLI => {
                    let logger = crate::cli::logger::LOGGER.lock().unwrap();
                    logger.log(LogType::$log_type, format_args!($($arg)*));
                }
                AppMode::GUI => {
                    unimplemented!()
                }
            }
        }
    };
}

#[macro_export]
macro_rules! log_info {
    ($($arg:tt)*) => {
        {
            use crate::cli::logger::LOGGER;
            use crate::core::logs::LogType;
            let logger = LOGGER.lock().unwrap();
            logger.log(LogType::INFO, format_args!($($arg)*));
        }
    };
}

#[macro_export]
macro_rules! log_warn {
    ($($arg:tt)*) => {
        {
            use crate::cli::logger::LOGGER;
            use crate::core::logs::LogType;
            let logger = LOGGER.lock().unwrap();
            logger.log(LogType::WARN, format_args!($($arg)*));
        }
    };
}

#[macro_export]
macro_rules! log_success {
    ($($arg:tt)*) => {
        {
            use crate::cli::logger::LOGGER;
            use crate::core::logs::LogType;
            let logger = LOGGER.lock().unwrap();
            logger.log(LogType::SUCCESS, format_args!($($arg)*));
        }
    };
}

#[macro_export]
macro_rules! log_error {
    ($($arg:tt)*) => {
        {
            use crate::cli::logger::LOGGER;
            use crate::core::logs::LogType;
            let logger = LOGGER.lock().unwrap();
            logger.log(LogType::ERROR, format_args!($($arg)*));
        }
    };
}

#[macro_export]
macro_rules! log_debug {
    ($($arg:tt)*) => {
        {
            use crate::cli::logger::LOGGER;
            use crate::core::logs::LogType;
            let logger = LOGGER.lock().unwrap();
            logger.log(LogType::DEBUG, format_args!($($arg)*));
        }
    }
}