41 lines
1.1 KiB
Bash
Executable File
41 lines
1.1 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
set -euo pipefail
|
|
|
|
fail() {
|
|
printf 'focus-session restart: %s\n' "$1" >&2
|
|
exit 1
|
|
}
|
|
|
|
cleanup() {
|
|
qs ipc call focus end >/dev/null 2>&1 || true
|
|
}
|
|
trap cleanup EXIT
|
|
|
|
qs ipc call focus end >/dev/null 2>&1 || true
|
|
qs ipc call focus start >/dev/null
|
|
qs ipc call focus pause >/dev/null
|
|
before=$(qs ipc call focus status)
|
|
|
|
qs kill >/dev/null
|
|
qs --daemonize >/dev/null
|
|
|
|
status=""
|
|
for _ in $(seq 1 60); do
|
|
status=$(qs ipc call focus status 2>/dev/null || true)
|
|
if jq -e '.active == true and .paused == true' <<<"$status" >/dev/null 2>&1; then
|
|
break
|
|
fi
|
|
sleep 0.2
|
|
done
|
|
|
|
jq -e '.active == true' <<<"$status" >/dev/null || fail 'active session was not restored'
|
|
jq -e '.paused == true' <<<"$status" >/dev/null || fail 'paused state was not restored'
|
|
[[ "$(jq -r .remaining <<<"$status")" == "$(jq -r .remaining <<<"$before")" ]] || fail 'paused remainder changed across restart'
|
|
jq -e '.doNotDisturb == true' <<<"$status" >/dev/null || fail 'Do Not Disturb was not reclaimed'
|
|
jq -e '.caffeine == true' <<<"$status" >/dev/null || fail 'Caffeine was not reclaimed'
|
|
|
|
cleanup
|
|
trap - EXIT
|
|
printf 'focus-session restart: PASS\n'
|