Files
2026-05-04 10:25:13 -04:00

56 lines
1.8 KiB
Bash
Executable File

#!/bin/sh
set -eu
SOURCE_URL_X86_64="${SOURCE_URL_X86_64:-${SOURCE_URL:-https://packages.element.io/desktop/install/linux/glibc-x86-64/element-desktop.tar.gz}}"
SOURCE_URL_AARCH64="${SOURCE_URL_AARCH64:-https://packages.element.io/desktop/install/linux/glibc-aarch64/element-desktop.tar.gz}"
OUTDIR="${1:-}"
if [ -z "$OUTDIR" ]; then
echo "usage: $0 OUTDIR" >&2
exit 1
fi
mkdir -p "$OUTDIR"
tmpdir="$(mktemp -d)"
cleanup() {
rm -rf "$tmpdir"
}
trap cleanup EXIT INT TERM
archive_x86_64="$tmpdir/element-desktop-x86_64.tar.gz"
archive_aarch64="$tmpdir/element-desktop-aarch64.tar.gz"
curl -fL "$SOURCE_URL_X86_64" -o "$archive_x86_64"
curl -fL "$SOURCE_URL_AARCH64" -o "$archive_aarch64"
topdir_x86_64="$(tar -tzf "$archive_x86_64" | sed -n '1s#/##p')"
topdir_aarch64="$(tar -tzf "$archive_aarch64" | sed -n '1s#/##p')"
version_x86_64="${topdir_x86_64#element-desktop-}"
version_aarch64="${topdir_aarch64#element-desktop-}"
version_aarch64="${version_aarch64%-arm64}"
if [ -z "$version_x86_64" ] || [ "$version_x86_64" = "$topdir_x86_64" ]; then
echo "failed to derive x86_64 version from archive root: $topdir_x86_64" >&2
exit 1
fi
if [ -z "$version_aarch64" ] || [ "$version_aarch64" = "$topdir_aarch64" ]; then
echo "failed to derive aarch64 version from archive root: $topdir_aarch64" >&2
exit 1
fi
if [ "$version_x86_64" != "$version_aarch64" ]; then
echo "upstream version mismatch: x86_64=$version_x86_64 aarch64=$version_aarch64" >&2
exit 1
fi
dest_x86_64="$OUTDIR/element-desktop-$version_x86_64.tar.gz"
dest_aarch64="$OUTDIR/element-desktop-$version_x86_64-arm64.tar.gz"
cp "$archive_x86_64" "$dest_x86_64"
cp "$archive_aarch64" "$dest_aarch64"
printf '%s\n' "$version_x86_64" > "$OUTDIR/.upstream-version"
printf '%s\n%s\n' "$dest_x86_64" "$dest_aarch64"