#!/bin/sh set -eu project_root=$(CDPATH= cd -- "$(dirname -- "$0")/.." && pwd) cd "$project_root" build_mode=${1:-build} case "$build_mode" in build|release|web) ;; *) echo 'Usage: scripts/build.sh [build|release|web] [all|amd64|arm64]' >&2; exit 2;; esac release_target=${2:-all} case "$release_target" in all) release_arches='amd64 arm64' ;; amd64|arm64) release_arches=$release_target ;; *) echo 'Release architecture must be all, amd64 or arm64' >&2; exit 2 ;; esac npm --prefix web ci npm --prefix web run build touch internal/web/dist/.gitkeep if [ "$build_mode" = web ]; then exit 0; fi node scripts/notices.mjs mkdir -p build if [ "$build_mode" = build ]; then CGO_ENABLED=0 go build -trimpath -ldflags='-s -w' -o build/bluebird ./cmd/bluebird exit 0 fi for build_arch in $release_arches; do build_dir="build/linux-$build_arch" rm -rf -- "$build_dir" mkdir -p "$build_dir" CGO_ENABLED=0 GOOS=linux GOARCH="$build_arch" go build -trimpath -ldflags='-s -w' -o "$build_dir/bluebird" ./cmd/bluebird cp deploy/config.example.toml "$build_dir/config.toml" cp deploy/install.sh "$build_dir/install.sh" cp deploy/upgrade.sh "$build_dir/upgrade.sh" printf '%s\n' "$build_arch" > "$build_dir/ARCH" cp -R deploy docs "$build_dir/" cp README.md THIRD_PARTY_NOTICES.txt "$build_dir/" tar -czf "build/bluebird-linux-$build_arch.tar.gz" -C "$build_dir" . done if [ "$release_target" != arm64 ]; then cp build/linux-amd64/bluebird build/bluebird; fi (cd build && sha256sum bluebird-linux-*.tar.gz > SHA256SUMS)