88 lines
2.5 KiB
Bash
Executable File
88 lines
2.5 KiB
Bash
Executable File
#!/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
|
|
|