#!/bin/bash
# dlna_bom-update
##
logtag='dlna_bom-update'
logger -s -t "${logtag}" "$@"
[ -f ${upgradePath}/etc/system.conf ] && . ${upgradePath}/etc/system.conf 2>/dev/null
# don't run _bom-update if no container - i.e. no cached .debs
[ -z "${container_name}" ] && exit 0

pkg_upgrades_dir=${pkg_upgrades_dir:-'/'}
firmwareUpdateFailed=${firmwareUpdateFailed:-"1003"}
        
source ./upgrade_utilities
source ./twonky_utilities

## inventory delivered packages
pkg_avail_access="false"
pkg_avail_twonky="false"
ls ${pkg_upgrades_dir} | grep -q 'dlna-server-access'; [ "$?" == "0" ] &&  pkg_avail_access="true"
ls ${pkg_upgrades_dir} | grep -q 'dlna-server-twonky'; [ "$?" == "0" ] &&  pkg_avail_twonky="true"

## check old/current package status
[ ! -f ./dlna_bom-oldpkg ] && bom_oldpkg
source ./dlna_bom-oldpkg
[ "${pkg_state_access}" == "ii" ] && dms_pkg="access"
[ "${pkg_state_twonky}" == "ii" ] && dms_pkg="twonky"
[ -z "${dms_pkg}" ] && logger -s "No DMS package currently installed."
logger -s -t "${logtag}" "Initial preferred dms_pkg=$dms_pkg"

## prior twonky installation status
twonky_allow
twonky_ok="$?"
if [ "${twonky_ok}" == "0" ]; then
    logger -s -t "${logtag}" "Twonky package was previously installed"
else
    logger -s -t "${logtag}" "Twonky package not previously installed"
fi

## select new dlna package
[ -f ${pkg_upgrades_dir}/dms_select_access ] && [ "${pkg_avail_access}" == "true" ] && dms_pkg="access"
[ -f ${pkg_upgrades_dir}/dms_select_twonky ] && [ "${pkg_avail_twonky}" == "true" ] && [ "${twonky_ok}" == "0" ] && dms_pkg="twonky"
[ -z "${dms_pkg}" ]      && dms_pkg="access"
logger -s -t "${logtag}" "Selected dms package: ${dms_pkg}"

[ -f ${pkg_upgrades_dir}/dms_select_twonky ] && [ "${pkg_avail_twonky}" == "true" ] && [ "${twonky_ok}" == "0" ]

## install selected dlna package
if [ "${dms_pkg}" == "twonky" ]; then
    logger -s -t "${logtag}" "Installing 'dlna-twonky' package.."
    # recover saved twonky binaries
    twonky_recover
    # remove access if needed
    [ "${pkg_state_access}" == "ii" ] && dpkg --remove --force-depends dlna-server-access
    # install twonky
    dpkg -i --force-overwrite --force-depends ${pkg_upgrades_dir}/dlna-server-twonky*.deb
    dpkg_status="$?"
elif [ "${dms_pkg}" == "access" ] && [ ! -f ${pkg_upgrades_dir}/dms_select_twonky ]; then
    logger -s -t "${logtag}" "Installing 'dlna-access' package.."
    # remove twonky if needed
    [ "${pkg_state_twonky}" == "ii" ] && dpkg --remove --force-depends dlna-server-twonky
    # install access
    dpkg -i --force-overwrite --force-depends ${pkg_upgrades_dir}/dlna-server-access*.deb
    dpkg_status="$?"
fi

## Cleanup state files
rm -f ${pkg_upgrades_dir}/dlna_bom-oldpkg
rm -f ${pkg_upgrades_dir}/dms_select_access
rm -f ${pkg_upgrades_dir}/dms_select_twonky

## Check package install status
if [ "${dpkg_status}" == "0" ]; then
    pkg_version=$(dpkg-query -W -f='${Package} ${Version}\n' dlna-server-${dms_pkg} 2>/dev/null)
    logger -s -t "${logtag}" "Writing /etc/nas/pkg-version.log: ${pkg_version} `date`"
    echo "${pkg_version} `date`" >> /etc/nas/pkg-version.log
    #echo "postinst: add leading '9' to FW version to indicate modified packages"
    #new_version=`cat /etc/version`
    #new_version=${new_version#[0-9]}
    #new_version="9${new_version}"
else
    logger -s -t "${logtag}" "Failed package installation phase: ${pkg_version} `date`"
    sendAlert.sh "ALERT=${firmwareUpdateFailed}";
    exit 1
fi

exit 0
