Bash · 1486 bytes Raw Blame History
1 #!/usr/bin/env bash
2 set -euo pipefail
3
4 repo_root=$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)
5 cd "$repo_root"
6
7 cargo build -p garwarp -p garwarpctl >/dev/null
8
9 tmp_share=$(mktemp -d)
10 runtime_dir=$(mktemp -d)
11 trap 'rm -rf "$tmp_share" "$runtime_dir"' EXIT
12
13 mkdir -p "$tmp_share/share/dbus-1/services"
14 cat > "$tmp_share/share/dbus-1/services/org.freedesktop.impl.portal.desktop.garwarp.service" <<SERVICE
15 [D-BUS Service]
16 Name=org.freedesktop.impl.portal.desktop.garwarp
17 Exec=$repo_root/target/debug/garwarp daemon
18 SERVICE
19
20 XDG_DATA_DIRS="$tmp_share/share:${XDG_DATA_DIRS:-/usr/local/share:/usr/share}" \
21 XDG_RUNTIME_DIR="$runtime_dir" \
22 dbus-run-session -- bash -lc '
23 set -euo pipefail
24
25 dbus-send --session --print-reply \
26 --dest=org.freedesktop.DBus \
27 /org/freedesktop/DBus \
28 org.freedesktop.DBus.StartServiceByName \
29 string:org.freedesktop.impl.portal.desktop.garwarp \
30 uint32:0 >/dev/null
31
32 dbus-send --session --print-reply \
33 --dest=org.freedesktop.DBus \
34 /org/freedesktop/DBus \
35 org.freedesktop.DBus.NameHasOwner \
36 string:org.freedesktop.impl.portal.desktop.garwarp | rg -q "boolean true"
37
38 "$0"/target/debug/garwarpctl status >/dev/null
39 "$0"/target/debug/garwarpctl stop >/dev/null
40
41 sleep 0.2
42
43 dbus-send --session --print-reply \
44 --dest=org.freedesktop.DBus \
45 /org/freedesktop/DBus \
46 org.freedesktop.DBus.NameHasOwner \
47 string:org.freedesktop.impl.portal.desktop.garwarp | rg -q "boolean false"
48 ' "$repo_root"
49
50 echo "dbus activation smoke test passed"