abort_if_offline
-TEMP_DIR=$(mktemp -d)
-cd "${TEMP_DIR}"
-
-MM_REPO_URL="https://deb.packages.mattermost.com"
-MM_REPO_KEY_URL="https://deb.packages.mattermost.com/pubkey.gpg"
-MM_REPO_KEY_FILENAME=mattermost.gpg
-MM_REPO_KEY_PATH="/etc/apt/trusted.gpg.d/${MM_REPO_KEY_FILENAME}"
-
-curl -sSL ${MM_REPO_KEY_URL} | gpg --dearmor > "${MM_REPO_KEY_FILENAME}"
-sudo mv "${MM_REPO_KEY_FILENAME}" "${MM_REPO_KEY_PATH}"
-
-DEB_RELEASE=stable
-MM_REPO_LIST_FILENAME="mattermost_${RELEASE}.list"
-MM_REPO_LIST_PATH="/etc/apt/sources.list.d/${MM_REPO_LIST_FILENAME}"
-
-echo "deb ${MM_REPO_URL} ${DEB_RELEASE} main" > "${MM_REPO_LIST_FILENAME}"
-sudo mv "${MM_REPO_LIST_FILENAME}" "${MM_REPO_LIST_PATH}"
-
-sudo apt update
-sudo apt install mattermost-desktop
-
-cd -
-rmdir "${TEMP_DIR}"
+install_with_repo() {
+ local APP_NAME=$1
+ local REPO_URL=$2
+ local KEY_FILENAME_SOURCE=$3
+ local SUITE=$4
+
+ local TEMP_DIR
+ TEMP_DIR=$(mktemp -d)
+
+ local KEY_URL="${REPO_URL}/${KEY_FILENAME_SOURCE}"
+ local KEY_PATH="/usr/share/keyrings/${KEY_FILENAME_TARGET}"
+ local KEY_FILENAME_TARGET="${APP_NAME}.gpg"
+ curl -sSL "${KEY_URL}" | gpg --dearmor > "$KEY_FILENAME_TARGET}"
+ sudo mv "${KEY_FILENAME_TARGET}" "${KEY_PATH}"
+
+ local SOURCES_FILENAME="${APP_NAME}.sources"
+ local SOURCES_PATH="/etc/apt/sources.list.d/${SOURCES_FILENAME}"
+ echo "Types: deb" > "${SOURCES_FILENAME}"
+ echo "URIs: ${REPO_URL}" >> "${SOURCES_FILENAME}"
+ echo "Suites: ${SUITE}" >> "${SOURCES_FILENAME}"
+ echo "Components: main" >> "${SOURCES_FILENAME}"
+ echo "Architectures: amd64" >> "${SOURCES_FILENAME}"
+ echo "Signed-by: ${KEY_PATH}" >> "${SOURCES_FILENAME}"
+ sudo mv "${SOURCES_FILENAME}" "${SOURCES_PATH}"
+
+ rmdir "${TEMP_DIR}"
+
+ sudo apt update
+ sudo apt install -y "${APP_NAME}-desktop"
+}
+
+install_with_repo mattermost httsp://deb.packages.mattermost.com pubkey.gpg stable
+
+install_with_repo signal httsp://updates.signal.org/desktop/apt signal-desktop-keyring.gpg xenial