Skip to main content

Update script for signal cli

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

← Back to blog