#!/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"