#!/bin/bash
# set -x 

#if [ ${log_helpers_sourced:-1} = "1" ]; then
#    readonly log_helpers_sourced=${BASH_SOURCE[0]}
#else
#    return 0
#fi 
    
readonly log_file=/var/log/update_controller.log
if ! [ -f "$log_file" ]; then
    touch $log_file
fi

readonly DEBUG=0
readonly INFO=1
readonly WARN=2
readonly CRIT=3
readonly ERROR=4
readonly FATAL=5
readonly MAX_DEBUG_LEVEL=6

log_level=0

set_dbg_level () {
    if [ $1 < $MAX_DEBUG_LEVEL ]; then
        log_level=$1
    fi
}

dbg_level () {
    return $log_level
}

log() {
    if [[ $(("$(wc -l < $log_file)")) -ge $((100000)) ]]; then
        # remove first line
        sed -e 1d -i $log_file
    fi
    local msg="$(date +'%Y-%m-%d_%T'): $*"
    printf "log:$msg\n" >&2
    printf "$msg\n" >> $log_file
}

log_debug() {
    if [ $log_level = $DEBUG ]; then
        log "DEBUG $*"
    fi
}

log_info() {
    if [ $log_level -le $INFO ]; then
        log "INFO  $*"
    fi
}

log_warn() {
    if [ $log_level -le $WARN ]; then
        log "WARN  $*"
    fi
}

log_crit() {
    if [ $log_level -le $CRIT ]; then
        log "CRIT  $*"
    fi
}

log_error() {
    if [ $log_level -le $ERROR ]; then
        log "ERROR  $*"
    fi
}

log_fatal() {
    if [ $log_level -le $FATAL ]; then
        log "FATAL  $*"
        log "exiting ..."
        exit 1
    fi
}

# log "test message1" "test message2"