#!/usr/bin/env bash set -x set -e set -u set -o pipefail verify=false args="$(getopt -o '' --long verify -- "$@")" eval "set -- $args" while true; do case "$1" in --verify) verify=true shift ;; --) shift break ;; esac done # Ensure the directory for LAST_DEPENDENCIES_HASH exists mkdir -p /var/lib/zulip SOURCES_FILE=/etc/apt/sources.list.d/zulip.list STAMP_FILE=/etc/apt/sources.list.d/zulip.list.apt-update-in-progress ZULIP_SCRIPTS="$(dirname "$(dirname "$0")")" DEPENDENCIES_HASH=$(sha1sum "$ZULIP_SCRIPTS/setup/"*.asc "$0") DEPENDENCIES_HASH_FILE="/var/lib/zulip/setup-repositories-state" # Ensure that DEPENDENCIES_HASH_FILE exists before hashing it. touch "$DEPENDENCIES_HASH_FILE" LAST_DEPENDENCIES_HASH="$(cat "$DEPENDENCIES_HASH_FILE")" # First, we only do anything in setup-apt-repo if any of its inputs # (apt keys, code, etc.) changed. if [ "$DEPENDENCIES_HASH" = "$LAST_DEPENDENCIES_HASH" ]; then exit 0 elif [ "$verify" == true ]; then exit 1 fi # Ensure that the sources file exists touch "$SOURCES_FILE" # Hash it to check if the sources file is changed by the script later. zulip_source_hash=$(sha1sum "$SOURCES_FILE") pre_setup_deps=(lsb-release apt-transport-https ca-certificates gnupg wget) if ! apt-get -dy install "${pre_setup_deps[@]}"; then apt-get update fi apt-get -y install "${pre_setup_deps[@]}" SCRIPTS_PATH="$(cd "$(dirname "$(dirname "$0")")" && pwd)" release=$(lsb_release -sc) if [[ "$release" =~ ^(bionic|cosmic|disco|eoan|focal|groovy)$ ]]; then distribution=ubuntu apt-key add "$SCRIPTS_PATH"/setup/pgdg.asc apt-key add "$SCRIPTS_PATH"/setup/pgroonga-ppa.asc cat >$SOURCES_FILE <$SOURCES_FILE <"$DEPENDENCIES_HASH_FILE"