#!/bin/bash
LOGFILE="/var/opt/bukpkgs/log/bukpkgs.$(date +"%y%m%d").log"
OKFILE="/var/opt/bukpkgs/run/bukpkgs.updated"
DEBARX="/var/cache/apt/archives"
DEBARXold="/var/cache/apt/archives.old"
MsgDIR="/var/opt/bukts/run"
MsgFILE="$MsgDIR/shiftopen.msg"
Message1="С $(date +"%H:%M") идет проверка наличия обновлений системы"
Message2="С $(date +"%H:%M") идет проверка обновлений системы"
MessageErr1="Ошибка при проверке наличия обновлений"
MessageErr2="Ошибка при загрузке обновлений"


echo "================" >> $LOGFILE
echo "$(date +"%y.%m.%d %H:%M:%S") ; $(basename $0) ; start" >> $LOGFILE

cml_i=$#
FORCE="no"
TREP=""
while [ $cml_i -ge "0" ]
do
    case $1 in
        -t)
	    if [ ! -z "$2" ]; then
	        TREP="-t $2"
	        shift
		cml_i=$(expr $cml_i - 1)
	    fi
            ;;
        -v)
            VERBV="yes"
            ;;
        -q)
            VERBQ="yes"
            ;;
        -f|--force)
            FORCE="yes"
            ;;
    esac
    shift
    cml_i=$(expr $cml_i - 1)
done


if [ -f $OKFILE ]; then
    rm -f $OKFILE
fi

#aptitude clean >> $LOGFILE 2>>$LOGFILE
mkdir -p $DEBARXold
mv $DEBARX/*buk*deb $DEBARXold 2>/dev/null
mv $DEBARX/*sbspsb*deb $DEBARXold 2>/dev/null
mv $DEBARX/*siebel*deb $DEBARXold 2>/dev/null

if [ -d $MsgDIR ]; then
    echo $Message1 > $MsgFILE
fi
if [ "$VERBV" == "yes" ]; then
    aptitude update
    ERR=$?
else
    aptitude update >> $LOGFILE 2>>$LOGFILE
    ERR=$?
fi
if [ "$FORCE" == "yes" ]; then
    ERR1=0
else
    ERR1=$ERR
fi

if [ $ERR -ne 0 ]; then
    if [ "$VERBV" == "yes" -o "$VERBQ" == "yes" ]; then
        echo "$MessageErr1 $ERR"
    fi
    echo "$(date +"%y.%m.%d %H:%M:%S") ; $(basename $0) ; update err=$ERR" >> $LOGFILE
fi

if [ $ERR1 -eq 0 ]; then
    if [ -d $MsgDIR ]; then
        echo $Message2 > $MsgFILE
    fi

    if [ "$VERBV" == "yes" ]; then
        /opt/bukpkgs/bukpkgs-install -d -v $TREP
        ERR=$?
    else
        /opt/bukpkgs/bukpkgs-install -d $TREP >> $LOGFILE 2>>$LOGFILE
        ERR=$?
    fi
    if [ "$FORCE" == "yes" ]; then
        ERR1=0
    else
        ERR1=$ERR
    fi

    if [ $ERR -ne 0 ]; then
        if [ "$VERBV" == "yes" -o "$VERBQ" == "yes" ]; then
            echo "$MessageErr2 $ERR1"
    fi
        echo "$(date +"%y.%m.%d %H:%M:%S") ; $(basename $0) ; download err=$ERR1" >> $LOGFILE
    fi

    if [ $ERR1 -eq 0 ]; then
        if [ $(ls $DEBARX/*buk*deb $DEBARX/*sbspsb*deb $DEBARX/*siebel*deb 2>/dev/null | wc -w) -ne 0 ]; then
            touch $OKFILE
            if [ "$VERBV" == "yes" -o "$VERBQ" == "yes" ]; then
                echo "Обновления успешно загружены в кэш"
                if [ "$VERBV" == "yes" ]; then
                    ls $DEBARX/*buk*deb $DEBARX/*sbspsb*deb $DEBARX/*siebel*deb 2>/dev/null
                fi
            fi
        fi
    fi
fi

if [ -f $MsgFILE ]; then
    rm -f $MsgFILE
fi
echo "$(date +"%y.%m.%d %H:%M:%S") ; $(basename $0) ; end" >> $LOGFILE
