#!/usr/bin/env bash
set -euo pipefail

CURRENT_VERSION="1.1.0"
REPOSITORY_BASE_URL="https://releases.killian.suprsolutions.com"
RELEASE_BASE_URL="${REPOSITORY_BASE_URL}/releases/${CURRENT_VERSION}"
VERSIONED_INSTALLER_URL="${RELEASE_BASE_URL}/install-killian.sh"

EXPECTED_INSTALLER_SHA256="f21743b28620c605513974f5b20450008c0368154384e1781b07d24b9b7f3c93"

say() {
    printf '%s\n' "$*"
}

fail() {
    printf 'ERROR: %s\n' "$*" >&2
    exit 1
}

if [[ "${EUID}" -ne 0 ]]; then
    fail "Run this installer with sudo: sudo ./install-killian.sh"
fi

if ! command -v curl >/dev/null 2>&1; then
    say "Installing curl..."
    apt-get update
    DEBIAN_FRONTEND=noninteractive apt-get install -y curl ca-certificates
fi

TMP_DIR="$(mktemp -d)"
VERSIONED_INSTALLER="${TMP_DIR}/install-killian-${CURRENT_VERSION}.sh"

cleanup() {
    rm -rf "${TMP_DIR}"
}
trap cleanup EXIT

say "============================================================"
say " Killian Installer Bootstrap"
say " Current release: ${CURRENT_VERSION}"
say "============================================================"
say ""

say "Downloading Killian ${CURRENT_VERSION} installer..."
curl -fsSL \
    "${VERSIONED_INSTALLER_URL}" \
    -o "${VERSIONED_INSTALLER}"

ACTUAL_SHA256="$(sha256sum "${VERSIONED_INSTALLER}" | awk '{print $1}')"

if [[ "${ACTUAL_SHA256}" != "${EXPECTED_INSTALLER_SHA256}" ]]; then
    fail "Installer checksum verification failed."
fi

say "Installer checksum verified."
say "Starting Killian ${CURRENT_VERSION} installer..."
say ""

chmod 700 "${VERSIONED_INSTALLER}"

KILLIAN_RELEASE_BASE_URL="${RELEASE_BASE_URL}" \
    "${VERSIONED_INSTALLER}"
