#!/usr/bin/env bash
# Given a Zulip production environment that had been installed with a
# previous version of Zulip, upgrade it to the commit being tested.
# This takes as input the tarball generated by production-build.
set -e
set -x

# Structurally, this script should just call upgrade-zulip.  However,
# because of a set of issues that result in the previously installed
# GitHub Actions Docker containers not actually working on boot, we
# need to do some preparatory steps. It is a goal to delete these
# steps.

# Reinstall rabbitmq-server.
#
# * For rabbitmq-server, we likely need to do this to work around the
# hostname changing on reboot causing RabbitMQ to not boot.
sudo apt-get -y purge rabbitmq-server
sudo apt-get -y install rabbitmq-server

# Start the postgresql service.
sudo service postgresql start

# Starting the rabbitmq-server
if ! sudo service rabbitmq-server start; then
    echo
    echo "Starting rabbitmq-server failed. Trying again:"
    sudo service rabbitmq-server start
fi

# Start the supervisor
sudo service supervisor start

# Zulip releases before 2.1.8/3.5/4.4 have a bug in their
# `upgrade-zulip` scripts, resulting in them exiting with status 0
# unconditionally. We work around that by running
# scripts/lib/upgrade-zulip instead.
UPGRADE_SCRIPT=/home/zulip/deployments/current/scripts/lib/upgrade-zulip

# Execute the upgrade.
sudo "$UPGRADE_SCRIPT" /tmp/zulip-server-test.tar.gz
