#!/bin/bash # Build script for multiple platforms set -e VERSION=${VERSION:-$(git describe --tags --always --dirty 2>/dev/null || echo "dev")} BUILD_DIR=${BUILD_DIR:-"build"} BINARY_NAME="hostkeeper" echo "Building Hostkeeper v${VERSION}" echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━" rm -rf ${BUILD_DIR} mkdir -p ${BUILD_DIR} platforms=( "linux/amd64" "linux/arm64" "linux/arm" "darwin/amd64" "darwin/arm64" "windows/amd64" ) for platform in "${platforms[@]}"; do IFS='/' read -r os arch <<< "$platform" output_name="${BINARY_NAME}-${os}-${arch}" if [ "$os" = "windows" ]; then output_name="${output_name}.exe" fi echo " Building for ${os}/${arch}..." GOOS=$os GOARCH=$arch go build \ -ldflags "-X main.version=${VERSION} -X main.buildTime=$(date -u +%Y-%m-%dT%H:%M:%SZ)" \ -o "${BUILD_DIR}/${output_name}" \ ./cmd/hostkeeper if command -v shasum &> /dev/null; then (cd ${BUILD_DIR} && shasum -a 256 "${output_name}" > "${output_name}.sha256") fi done echo "" echo "Build complete! Binaries in ${BUILD_DIR}/" echo "" echo "Available binaries:" ls -lh ${BUILD_DIR}/