#!/usr/bin/env bash
set -euo pipefail
exec 9>/var/lock/update-signal-cli.lock
flock -n 9 || exit 0
INSTALL_PATH="/opt/signal-cli"
BIN_LINK="/usr/local/bin/signal-cli"
TMPDIR="$(mktemp -d)"
cleanup() { rm -rf "$TMPDIR"; }
trap cleanup EXIT
VERSION="$(curl -Ls -o /dev/null -w '%{url_effective}' https://github.com/AsamK/signal-cli/releases/latest | sed -e 's/^.*\/v//')"
ARCHIVE="signal-cli-${VERSION}-Linux-native.tar.gz"
URL="https://github.com/AsamK/signal-cli/releases/download/v${VERSION}/${ARCHIVE}"
cd "$TMPDIR"
curl -L -o "$ARCHIVE" "$URL"
# Extract: this archive places the binary at /opt/signal-cli
sudo tar xf "$ARCHIVE" -C /opt
if [ ! -x "$INSTALL_PATH" ]; then
echo "Expected executable not found at $INSTALL_PATH after extract." >&2
ls -la /opt/signal-cli* >&2 || true
exit 1
fi
sudo ln -sf "$INSTALL_PATH" "$BIN_LINK"
"$BIN_LINK" --version