#!/bin/bash
#Name: lib-logging-ds
#Version: 1.0
#Depends: 
#Author: BitJam, Dave (david@daveserver.info)
#Purpose: Logging library for desktop-session
#License: gplv3

ME=${0##*/}

#Base Logging Level
LOG_LEVEL=9;

fatal() {
	if (( "$LOG_LEVEL"  >= 3 )); then 
	    echo "$ME: Fatal Error: $*"; 
	fi
    exit 2
}

error() {
    if (( "$LOG_LEVEL"  >= 3 )); then
        echo "$ME Error:" >&2;
        echo "$*"         >&2;
    fi
    exit 2
}

warn() { 
	if (( "$LOG_LEVEL"  >= 5 )); then
	    echo "$ME: Warning: $*";
	fi
	return; 
}

say() { 
	if (( "$LOG_LEVEL"  >= 9 )); then
	    echo "$ME: $*"; 
	fi
	return;
}

log() { 
	if (( "$LOG_LEVEL"  >= 7 )); then
	    echo "$ME: $*" >> $log_file; 
	fi
	return
}

shout() { 
	if (( "$LOG_LEVEL"  >= 5 )); then
	    echo "$ME: $*" | tee -a $log_file; 
	fi
	return
}

psay() { say "$(plural "$@")" ; }

echo_variable() {
	if (( "$LOG_LEVEL"  >= 9 )); then
        echo "$ME: Setting environment variable: $*";
    fi
    export "$@"
}

echo_cmd() {
    if (( "$LOG_LEVEL"  >= 9 )); then
        echo "$ME: run: $*";
        "$@"
    elif (( "$LOG_LEVEL"  >= 5 )); then
        "$@" 1> /dev/null
    else
        "$@" 1> /dev/null 2>&1
    fi
}

echo_eval_cmd() {
	if (( "$LOG_LEVEL"  >= 9 )); then
        echo "$ME: run: eval $*";
        eval "$@" &
    elif (( "$LOG_LEVEL"  >= 5 )); then
        eval "$@" 1> /dev/null &
    else
        eval "$@" 1> /dev/null 2>&1 &
    fi
}

echo_bg_cmd() {
	if (( "$LOG_LEVEL"  >= 9 )); then
        echo "$ME: run: $* &";
        "$@" &
    elif (( "$LOG_LEVEL"  >= 5 )); then
        "$@" 1> /dev/null &
    else
        "$@" 1> /dev/null 2>&1 &
    fi
}

log_rotate() {
    date=$(date +%Y-%m-%d_%H-%M);
    log_amount="5";
    
    if [ -e "$log_file" ]; then
        mv "$log_file" "$user_dts_dir/old-log-$date.log";
    else
        touch $log_file;
    fi
    
    log_list=$(find "$user_dts_dir" -maxdepth '1' -iname "*.log")
    log_file_count=$(echo $log_list |wc -l)
    if [ "$log_file_count" -lt "$log_amount" ]; then
        for item in $( stat -c "%X|%n" $log_list |sort -r |tail -n "+$log_amount" 2> /dev/null )
        do
            file=$(echo "$item" | cut -d "|" -f2)
            rm $file;
        done
    fi
}
