#!/bin/bash
. /usr/lib/umm/umm_vars
[[ -x ${0}.local ]] && source ${0}.local


set_umm(){
    echo umm >$UMM_FLAG
}

# check if UMM enabled and skip processing any services
[[ "$UMM" == "yes" ]] || umm-skip

if [[ "$1" == "timer" ]] ; then
    sleep $(($COUNTER_RESET_TIME*60))
    rm -f $UMM_DATA/UMM_DRC.var
    exit 0
fi

# gracefull shutdown restart processing
if [[ "$1" == "down" ]] ; then
    rm -f $UMM_DATA/UMM_DRC.var
    exit 0
fi

# run sceduled programm in maintenace mode
if [[ "$1" == "run" ]] ; then
    if  [[ -f "$UMM_DATA/UMM_CMD" && -f "$UMM_FLAG" ]] ; then
        cmd=$(cat $UMM_DATA/UMM_CMD)
        rm $UMM_DATA/UMM_CMD
        $cmd &> $UMM_DATA/UMM_CMD.out || true
    fi
    exit 0
fi

# clean previos state
[[ -f $UMM_FLAG ]] && rm $UMM_FLAG

# check if umm enforsed parameter is present
if [[ -f $UMM_DATA/UMM_ENFORCED ]] ; then
    set_umm
    rm $UMM_DATA/UMM_ENFORCED
fi

# check if umm kernel parameter is present
for t in $(cat /proc/cmdline); do
    [[ "$t" == "umm" ]] && set_umm
done

# check if dirty rebout count is reached
UMM_DRC=$((UMM_DRC+1))
echo "UMM_DRC=$UMM_DRC">$UMM_DATA/UMM_DRC.var

[[ ${UMM_DRC} -gt ${REBOOT_COUNT} ]] && set_umm

if [[ -f $UMM_FLAG ]] ; then
    umm-run
else
    umm-skip
fi
