|
| 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