#!/bin/bash

PATH=/bin:/usr/bin:/sbin:/usr/sbin

LOGFILE="/var/log/wazo-upgrade.log"
DATEFORMAT="%Y-%m-%d_%H:%M:%S"

check_package_is_available()
{
    local package=$1
    test $(apt-cache madison "$package" | grep 'Packages$' | wc -l) -ge 1
}

check_debian_mirror_is_available()
{
    if ! check_package_is_available bash ; then
        echo 'Could not find any Debian repository to download "bash" from. Check your /etc/apt/sources.list.'
        return 1
    fi
}

check_wazo_mirror_is_available()
{
    if ! check_package_is_available wazo-upgrade ; then
        echo 'Could not find any Wazo repository to download "wazo-upgrade" from. Check your /etc/apt/sources.list.d or run "wazo-dist -m pelican-bookworm".'
        return 1
    fi
}

run_upgrade()
{
    apt-get update -o DPkg::Lock::Timeout=15 > /dev/null
    check_debian_mirror_is_available || return 1
    check_wazo_mirror_is_available || return 1
    echo "Upgrading wazo-upgrade"
    apt-get install -o DPkg::Lock::Timeout=15 -y wazo-upgrade

    /usr/bin/real-wazo-upgrade "$@"
}

append_log_start()
{
    logfile=$1
    cat >> $logfile <<-EOF

	===========================================
	wazo-upgrade started at $(date +$DATEFORMAT)
	===========================================

	EOF
}

append_log_end()
{
    logfile=$1
    cat >> $logfile <<-EOF

	===========================================
	wazo-upgrade stopped at $(date +$DATEFORMAT)
	===========================================

	EOF
}

log_and_upgrade()
{
    append_log_start $LOGFILE
    run_upgrade "$@" |& tee -a $LOGFILE
    append_log_end $LOGFILE
}

log_and_upgrade "$@"
