#!/bin/bash
set -euo pipefail

CONFIG_FILE=/etc/opt/princh/config.json
INSTALLED_VERSION=$(dpkg-query --show --showformat='${version}' princh-cloud-connector)
BRANCH=$(jq -r '.products["PrinchCloudConnector"].branch' "$CONFIG_FILE")
REMOTE_VERSION=$(wget -q -O - https://packages.princh.com/linux/debian/"amd64"/"PrinchCloudConnector"/"$BRANCH"/current.version)

if [[ -z "$REMOTE_VERSION" ]]; then
  echo "Could not retrieve version information."
  exit
fi

if dpkg --compare-versions "$INSTALLED_VERSION" eq "$REMOTE_VERSION"; then
  echo "No updates to install."
  exit
fi

echo "Found new version. Replacing installed version $INSTALLED_VERSION with $REMOTE_VERSION"
TMPDIR=$(mktemp -dq)
trap 'rm -rf $TMPDIR' EXIT
trap 'echo "Failed updating PrinchCloudConnector."' ERR

cd "$TMPDIR"
wget -nv https://packages.princh.com/linux/debian/"amd64"/"PrinchCloudConnector"/"$BRANCH"/current -O pcc.deb
wget -nv https://packages.princh.com/linux/debian/"amd64"/"PrinchCloudConnector"/"$BRANCH"/current.sig -O pcc.deb.sig
gpg --quiet --import /opt/princh/keys/*.asc || true
gpg --verify pcc.deb.sig pcc.deb
dpkg --force-downgrade --install pcc.deb || true
apt-get install --fix-broken --yes

echo "Successfully updated PrinchCloudConnector."
