Skip to content

Commit ad8a207

Browse files
committed
Add Linux package layout verifier
1 parent ff28b11 commit ad8a207

1 file changed

Lines changed: 65 additions & 0 deletions

File tree

Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
#!/usr/bin/env bash
2+
set -euo pipefail
3+
4+
repo_root="$(cd "$(dirname "${BASH_SOURCE[0]}")/../.." && pwd)"
5+
tmp="$(mktemp -d)"
6+
trap 'rm -rf "$tmp"' EXIT
7+
8+
mkdir -p "$repo_root/target/release"
9+
for binary in wezterm wezterm-gui wezterm-mux-server; do
10+
cat > "$repo_root/target/release/$binary" <<'EOF'
11+
#!/usr/bin/env sh
12+
echo turtleterm-stub
13+
EOF
14+
chmod 0755 "$repo_root/target/release/$binary"
15+
done
16+
17+
prefix="$tmp/prefix"
18+
TURTLE_TERM_STAGE_PREFIX="$prefix" "$repo_root/packaging/scripts/stage-linux-package.sh" >/dev/null
19+
20+
required_paths=(
21+
"$prefix/bin/turtleterm"
22+
"$prefix/bin/turtleterm-mux-server"
23+
"$prefix/bin/turtle-term"
24+
"$prefix/bin/turtle-agentd"
25+
"$prefix/bin/turtle-agentctl"
26+
"$prefix/bin/turtle-tmux"
27+
"$prefix/bin/sourceos-term"
28+
"$prefix/etc/turtle-term/turtleterm.lua"
29+
"$prefix/libexec/turtle-term/wezterm"
30+
"$prefix/libexec/turtle-term/wezterm-gui"
31+
"$prefix/libexec/turtle-term/wezterm-mux-server"
32+
"$prefix/share/applications/ai.sourceos.TurtleTerm.desktop"
33+
"$prefix/share/metainfo/ai.sourceos.TurtleTerm.metainfo.xml"
34+
"$prefix/share/icons/hicolor/scalable/apps/ai.sourceos.TurtleTerm.svg"
35+
"$prefix/share/turtle-term/skills"
36+
"$prefix/share/turtle-term/brand"
37+
"$prefix/share/turtle-term/desktop"
38+
"$prefix/share/turtle-term/sourceos"
39+
)
40+
41+
for path in "${required_paths[@]}"; do
42+
if [ ! -e "$path" ]; then
43+
echo "missing expected TurtleTerm package path: $path" >&2
44+
exit 1
45+
fi
46+
done
47+
48+
for private_binary in wezterm wezterm-gui wezterm-mux-server; do
49+
if [ -e "$prefix/bin/$private_binary" ]; then
50+
echo "private runtime binary leaked onto product PATH: $private_binary" >&2
51+
exit 1
52+
fi
53+
done
54+
55+
if command -v desktop-file-validate >/dev/null 2>&1; then
56+
desktop-file-validate "$prefix/share/applications/ai.sourceos.TurtleTerm.desktop"
57+
fi
58+
59+
if command -v appstreamcli >/dev/null 2>&1; then
60+
appstreamcli validate --no-net "$prefix/share/metainfo/ai.sourceos.TurtleTerm.metainfo.xml"
61+
fi
62+
63+
"$prefix/bin/turtle-agentctl" --stdio ping >/dev/null
64+
65+
echo "verified TurtleTerm Linux package layout at $prefix"

0 commit comments

Comments
 (0)