#!/bin/bash

set -euo pipefail

ngcp_type='spce'
installer_package='ngcp-installer-ce'
if "${PRO_EDITION}" || "${CARRIER_EDITION}"; then
  ngcp_type='sppro'
  installer_package='ngcp-installer-pro'
fi

repo="${REPOS_BASE_URL}/${ngcp_type}/${UPGRADE_VERSION}/ ${DIST} main"
if [[ "${UPGRADE_VERSION}" == 'trunk' ]]; then
  repo="${REPOS_BASE_URL}/autobuild/ release-${UPGRADE_VERSION}-${DIST} main"
fi

TMPDIR=$(mktemp -d)
mkdir -p "${TMPDIR}/statedir/lists/partial" \
  "${TMPDIR}/cachedir/archives/partial" \
  "${TMPDIR}/etc/apt/sources.list.d" \
  "${TMPDIR}/etc/apt/preferences.d"

if [[ ${EUID} == 0 ]] ; then
  chown _apt "${TMPDIR}" "${TMPDIR}"/{cachedir,statedir} "${TMPDIR}/cachedir/archives"
fi

echo "deb ${repo}" >> "${TMPDIR}/etc/apt/sources.list.d/sipwise.list"
if "${ENABLE_UPGRADE_PPA:-false}"; then
  source_list_ppa='/etc/apt/sources.list.d/sipwise_ppa.list'
  if [[ -r "${source_list_ppa}" ]]; then
    cp "${source_list_ppa}" "${TMPDIR}/etc/apt/sources.list.d/"
  fi
  preference_ppa='/etc/apt/preferences.d/00_sipwise_ppa'
  if [[ -r "${preference_ppa}" ]]; then
    cp "${preference_ppa}" "${TMPDIR}/etc/apt/preferences.d/"
  fi
fi

apt_get_cmd='apt-get'
apt_get_cmd+=" -o Dir::Cache=${TMPDIR}/cachedir"
apt_get_cmd+=" -o Dir::Cache::Archives=${TMPDIR}/cachedir/archives"
apt_get_cmd+=" -o Dir::Etc=${TMPDIR}/etc/apt/"
apt_get_cmd+=" -o Dir::Etc::PreferencesParts=${TMPDIR}/etc/apt/preferences.d"
apt_get_cmd+=" -o Dir::Etc::TrustedParts=/etc/apt/trusted.gpg.d"
apt_get_cmd+=" -o Dir::State=${TMPDIR}/statedir"

${apt_get_cmd} update
pushd /ngcp-fallback &>/dev/null
${apt_get_cmd} download "${installer_package}" ngcp-archive-keyring
popd &>/dev/null
rm -rf "${TMPDIR}"

chroot /ngcp-fallback find / -maxdepth 1 -type f -name '*.deb' -exec dpkg -i {} \;
rm -f /ngcp-fallback/ngcp-archive-keyring*
rm -f /ngcp-fallback/"${installer_package}"*
