Restructure directory layout
To make this better than the unorganized mess it used to be.
This commit is contained in:
parent
58a36ed632
commit
c4f7279f2e
25 changed files with 0 additions and 727 deletions
90
sysadmin/update_element_im.sh
Executable file
90
sysadmin/update_element_im.sh
Executable file
|
@ -0,0 +1,90 @@
|
|||
#!/bin/bash
|
||||
# SPDX-FileCopyrightText: 2020 Luca Beltrame <lbeltrame@kde.org>
|
||||
# SPDX-License-Identifier: BSD-3-clause
|
||||
|
||||
set -e
|
||||
set -o errexit
|
||||
set -o pipefail
|
||||
set -o nounset
|
||||
|
||||
function version_gt() {
|
||||
test "$(printf '%s\n' "$@" | sort -V | head -n 1)" != "$1";
|
||||
}
|
||||
|
||||
function cleanup() {
|
||||
local tmpdir=$1
|
||||
if [ -n "$(ls -A ${tmpdir})" ]; then
|
||||
rm -r "${tmpdir:?}"/*
|
||||
fi
|
||||
rmdir "${tmpdir}"
|
||||
|
||||
}
|
||||
|
||||
function update() {
|
||||
local tarball_url=$1
|
||||
local gpg_url=$2
|
||||
local tempdir=$3
|
||||
local destination=$4
|
||||
|
||||
tarball_file=$(basename "${tarball_url}")
|
||||
gpg_file=$(basename "${gpg_url}")
|
||||
|
||||
pushd "${tempdir}"
|
||||
echo "Downloading..."
|
||||
/usr/bin/curl -L -O "${tarball_url}"
|
||||
/usr/bin/curl -L -O "${gpg_url}"
|
||||
|
||||
# GPG key of project
|
||||
echo "Verifying the archive integrity..."
|
||||
/usr/bin/curl -s -O "https://github.com/RiotRobot.gpg"
|
||||
/usr/bin/gpg -o RiotRobot.ring --dearmor RiotRobot.gpg
|
||||
/usr/bin/gpg --no-default-keyring --keyring ./RiotRobot.ring --verify "${gpg_file}"
|
||||
|
||||
echo "Extracting archive..."
|
||||
tar xfv "${tarball_file}"
|
||||
folder_name=$(basename "${tarball_file}" .tar.gz)
|
||||
# Update Element, but don't destroy the existing configuration
|
||||
echo "Copying new files..."
|
||||
/usr/bin/rsync -rXH "${folder_name}/" "${destination}/" \
|
||||
--delete \
|
||||
--exclude config.json \
|
||||
--chown "${WEB_USER}":"${WEB_USER}"
|
||||
chown -R "${WEB_USER}":"${WEB_USER}" "${destination}"
|
||||
echo "Update complete."
|
||||
popd
|
||||
}
|
||||
|
||||
tmpdir=$(mktemp -d)
|
||||
|
||||
trap 'cleanup ${tmpdir}' EXIT
|
||||
|
||||
HOMESERVER_URL="https://chat.dennogumi.org"
|
||||
DESTINATION_PATH="/srv/www/htdocs/chat.dennogumi.org"
|
||||
WEB_USER="nginx"
|
||||
github_data=$(/usr/bin/curl -s https://api.github.com/repos/vector-im/element-web/releases/latest)
|
||||
|
||||
current_version=$(/usr/bin/curl -s "${HOMESERVER_URL}/version")
|
||||
remote_version=$(echo "${github_data}" | /usr/bin/jq -r '.name')
|
||||
|
||||
echo "Checking for version updates..."
|
||||
|
||||
if version_gt "${remote_version}" "v${current_version}"
|
||||
then
|
||||
echo "New version found: ${remote_version}"
|
||||
changelog=$(echo "${github_data}" | /usr/bin/jq -r '.body')
|
||||
echo "Changes in this version:"
|
||||
echo "${changelog}"
|
||||
asset_name=$(echo "${github_data}" | /usr/bin/jq -r '.assets[] |
|
||||
select(.browser_download_url|endswith("tar.gz")) |
|
||||
select(.name|startswith("element")).browser_download_url')
|
||||
gpg_key_name=$(
|
||||
echo "${github_data}" | /usr/bin/jq -r '.assets[] |
|
||||
select(.browser_download_url|endswith("asc")) |
|
||||
select(.name|startswith("element")).browser_download_url')
|
||||
echo "Updating Element.im from ${current_version} to ${remote_version}..."
|
||||
update "${asset_name}" "${gpg_key_name}" "${tmpdir}" "${DESTINATION_PATH}"
|
||||
else
|
||||
echo "No new update: nothing to do."
|
||||
fi
|
||||
|
||||
exit 0
|
Loading…
Add table
Add a link
Reference in a new issue