#!/usr/bin/env bash # Builds self-contained, trimmed, single-file binaries for Linux and Windows. # Usage: ./publish.sh [linux-x64|win-x64|linux-arm64|win-arm64 ...] (default: linux-x64 win-x64) set -euo pipefail cd "$(dirname "$0")" rids=("$@") if [ ${#rids[@]} -eq 0 ]; then rids=(linux-x64 win-x64) fi for rid in "${rids[@]}"; do out="artifacts/$rid" echo "==> publishing $rid" dotnet publish src/Minesweeper \ --configuration Release \ --runtime "$rid" \ --self-contained true \ -p:PublishTrimmed=true \ -p:PublishSingleFile=true \ -p:IncludeNativeLibrariesForSelfExtract=true \ -p:DebugType=none \ -p:DebugSymbols=false \ --output "$out" binary="$out/minesweeper" case "$rid" in win-*) binary="$binary.exe" ;; esac du -h "$binary" | sed 's/^/ /' done echo "done - binaries are under artifacts//"