#!/usr/bin/env sh set -eu ROOT_DIR="$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd)" OUTPUT_DIR="${PLATFORM_AGENT_RELEASE_DIR:-$ROOT_DIR/dist/release}" STAGE_DIR="$(mktemp -d)" cleanup() { rm -rf "$STAGE_DIR"; } trap cleanup EXIT INT TERM require_file() { if [ ! -e "$ROOT_DIR/$1" ]; then printf 'Missing required file: %s\n' "$1" >&2 exit 1 fi } for file in package.json bun.lock tsconfig.json agent.config.json src scripts/install.sh scripts/setting.sh scripts/uninstall.sh scripts/installer-tui/main.go; do require_file "$file" done build_tui() { arch="$1" output="$ROOT_DIR/scripts/installer-tui/installer-tui-linux-$arch" if command -v go >/dev/null 2>&1; then ( cd "$ROOT_DIR/scripts/installer-tui" GOOS=linux GOARCH="$arch" go build -o "$output" . ) return fi if command -v docker >/dev/null 2>&1; then docker run --rm \ --user "$(id -u):$(id -g)" \ -e GOCACHE=/tmp/go-build-cache \ -e GOOS=linux \ -e GOARCH="$arch" \ -v "$ROOT_DIR/scripts/installer-tui:/src" \ -w /src \ golang:1.22-alpine \ sh -c "go build -o installer-tui-linux-$arch ." return fi printf '%s\n' 'Go or Docker is required to build installer binaries.' >&2 exit 1 } package_archive() { arch="$1" package_dir="$STAGE_DIR/platform-agent" archive="$OUTPUT_DIR/platform-agent-linux-$arch.tar.gz" rm -rf "$package_dir" mkdir -p "$package_dir/scripts/installer-tui" cp "$ROOT_DIR/package.json" "$ROOT_DIR/bun.lock" "$ROOT_DIR/tsconfig.json" "$ROOT_DIR/agent.config.json" "$package_dir/" cp -R "$ROOT_DIR/src" "$package_dir/src" cp -R "$ROOT_DIR/scripts/." "$package_dir/scripts/" rm -f "$package_dir/scripts/installer-tui/installer-tui" \ "$package_dir/scripts/installer-tui/installer-tui-linux-amd64" \ "$package_dir/scripts/installer-tui/installer-tui-linux-arm64" cp "$ROOT_DIR/scripts/installer-tui/installer-tui-linux-$arch" "$package_dir/scripts/installer-tui/" chmod +x "$package_dir/scripts/install.sh" "$package_dir/scripts/setting.sh" "$package_dir/scripts/uninstall.sh" \ "$package_dir/scripts/installer-tui/installer-tui-linux-$arch" tar -C "$STAGE_DIR" -czf "$archive" platform-agent printf 'Created %s\n' "$archive" } mkdir -p "$OUTPUT_DIR" build_tui amd64 build_tui arm64 package_archive amd64 package_archive arm64 if command -v sha256sum >/dev/null 2>&1; then ( cd "$OUTPUT_DIR" sha256sum platform-agent-linux-amd64.tar.gz platform-agent-linux-arm64.tar.gz > checksums.txt ) printf 'Created %s/checksums.txt\n' "$OUTPUT_DIR" fi