#!/usr/bin/env bash
# ======================================================================
#
# DEPLOYMENT CLIENT :: CHECK STATUS
#
# ----------------------------------------------------------------------
# 2023-12-11  v0.1  <axel.hahn@iml.unibe.ch>  first lines...
# 2023-12-14  v0.2  <axel.hahn@iml.unibe.ch>  detect profile without logfile
# ======================================================================

# ----------------------------------------------------------------------
# CONFIG
# ----------------------------------------------------------------------
cd $( dirname $0 )
selfdir=$( /bin/pwd )
logdir=/var/log/imldeployment-client
tmpfile=/tmp/deploystatus.log

typeset -i iErrors=0
typeset -i iUnknown=0
typeset -i iCount=0

# ----------------------------------------------------------------------
# FUNCTIONS
# ----------------------------------------------------------------------

# get a list profiles by searching a config.sh
# no param
function getprofiles(){
    find ${selfdir}/profiles/ -name "config.sh" | rev | cut -f 2 -d "/" | rev
}

# ----------------------------------------------------------------------
# MAIN
# ----------------------------------------------------------------------

for myprofile in $( getprofiles )
do
    iCount+=1
    logfile=$( ls -tr1 ${logdir}/${myprofile}__* | tail -1 )

    if [ -z "$logfile" ]; then
        echo "UNKNOWN: $myprofile - was created but not rolled out yet."
        iUnknown+=1
    else
        if grep "^OK: ${myprofile}$" $logfile >/dev/null; then
            echo "OK: $myprofile - $logfile"
        else
            iErrors+=1
            echo "ERROR: $myprofile - $logfile"
            echo "    Last lines:"
            tail -10 "${logfile}" | sed "s#^#    #g"
            echo
        fi
    fi
done > "$tmpfile"
if [ $iCount -eq 0 ]; then
    echo "UNKNOWN: Deployment No profile was created yet."
else
    if [ $iErrors -eq 0 ]; then
        if [ $iUnknown -gt 0 ]; then
            echo -n "UNKNOWN"
        else
            echo -n "OK"
        fi
    else
        echo -n "ERROR"
    fi
    echo ": Deployment ... Profiles: $iCount ... Errors: $iErrors"
    cat "$tmpfile"
fi
rm -f "$tmpfile"
exit $iErrors

# ----------------------------------------------------------------------
