build_systems / prebuild-common-x86-64-v3 (pull_request) Successful in 22s
treefmt / nix fmt (pull_request) Successful in 2s
build_systems / build-portal-1 (pull_request) Successful in 18s
build_systems / build-bob (pull_request) Successful in 40s
build_systems / build-brain (pull_request) Successful in 41s
test ebook search / test-ebook-search (pull_request) Successful in 1m8s
build_systems / build-rhapsody-in-green (pull_request) Successful in 53s
build_systems / build-jeeves (pull_request) Successful in 1m16s
treefmt / nix fmt (push) Successful in 3s
build_systems / prebuild-common-x86-64-v3 (push) Successful in 5s
build_systems / build-portal-1 (push) Successful in 18s
test ebook search / test-ebook-search (push) Successful in 1m13s
build_systems / build-bob (push) Successful in 29s
build_systems / build-brain (push) Successful in 29s
build_systems / build-rhapsody-in-green (push) Successful in 38s
build_systems / build-jeeves (push) Successful in 1m3s
61 lines
1.3 KiB
Bash
Executable File
61 lines
1.3 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -Eeuo pipefail
|
|
|
|
host_name="$(hostname)"
|
|
if [[ "$#" -ne 0 ]]; then
|
|
echo "Usage: signal_link.sh" >&2
|
|
exit 2
|
|
fi
|
|
|
|
service_name="signal-cli"
|
|
data_dir="/var/lib/signal-cli"
|
|
link_pid=""
|
|
temp_dir=""
|
|
restart_service=false
|
|
|
|
cleanup() {
|
|
if [[ -n "$link_pid" ]] && kill -0 "$link_pid" 2>/dev/null; then
|
|
kill "$link_pid" 2>/dev/null || true
|
|
wait "$link_pid" 2>/dev/null || true
|
|
fi
|
|
|
|
if [[ -n "$temp_dir" ]]; then
|
|
rm -f -- "$temp_dir/link-uri"
|
|
rmdir -- "$temp_dir"
|
|
fi
|
|
|
|
if [[ "$restart_service" == true ]]; then
|
|
sudo systemctl start "$service_name"
|
|
fi
|
|
}
|
|
trap cleanup EXIT
|
|
|
|
restart_service=true
|
|
sudo systemctl stop "$service_name"
|
|
|
|
temp_dir="$(mktemp -d)"
|
|
link_fifo="$temp_dir/link-uri"
|
|
mkfifo "$link_fifo"
|
|
|
|
sudo -u signal-cli \
|
|
signal-cli --data-dir "$data_dir" link --name "$host_name" >"$link_fifo" &
|
|
link_pid="$!"
|
|
|
|
if ! IFS= read -r device_uri <"$link_fifo"; then
|
|
wait "$link_pid"
|
|
exit 1
|
|
fi
|
|
if [[ "$device_uri" != sgnl://linkdevice\?* ]]; then
|
|
echo "signal-cli returned an invalid device link URI." >&2
|
|
exit 1
|
|
fi
|
|
|
|
echo "Run this command manually on jeeves in another dotfiles dir:"
|
|
printf "sudo ./scripts/signal/authorize.sh %q\n" "$device_uri"
|
|
echo "Waiting for jeeves to authorize this device..."
|
|
|
|
wait "$link_pid"
|
|
link_pid=""
|
|
echo "$host_name is now linked to the Signal account on jeeves."
|