Files
ehwrj/scripts/bootstrap-ubuntu.sh
yeorinhieut cba5243ce4
Some checks failed
build / build-test-publish (push) Has been cancelled
Add Ehwrj clean-room live map
2026-06-02 22:49:24 +09:00

117 lines
2.2 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
ROOT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
APT_UPDATED=0
usage() {
cat <<'EOF'
Usage:
scripts/bootstrap-ubuntu.sh [--no-install]
Installs the Ubuntu packages needed to build Ehwrj, then runs the full
Release verification and Windows x64 publish pipeline.
Options:
--no-install Skip apt installs and only run the verification/publish step.
EOF
}
NO_INSTALL=0
while [[ $# -gt 0 ]]; do
case "$1" in
--no-install)
NO_INSTALL=1
shift
;;
-h|--help)
usage
exit 0
;;
*)
echo "error: unknown argument: $1" >&2
usage >&2
exit 2
;;
esac
done
if [[ -r /etc/os-release ]]; then
# shellcheck disable=SC1091
. /etc/os-release
else
echo "error: /etc/os-release not found; this script expects Ubuntu." >&2
exit 1
fi
if [[ "${ID:-}" != "ubuntu" ]]; then
echo "error: this bootstrap script expects Ubuntu, got '${ID:-unknown}'." >&2
exit 1
fi
run_as_root() {
if [[ "$(id -u)" -eq 0 ]]; then
"$@"
return
fi
if ! command -v sudo >/dev/null 2>&1; then
echo "error: sudo is required when not running as root." >&2
exit 1
fi
sudo "$@"
}
apt_install() {
if [[ "$NO_INSTALL" -eq 1 ]]; then
return
fi
if [[ "$APT_UPDATED" -eq 0 ]]; then
run_as_root apt-get update
APT_UPDATED=1
fi
run_as_root apt-get install -y "$@"
}
has_dotnet_8_sdk() {
command -v dotnet >/dev/null 2>&1 && dotnet --list-sdks | awk '{print $1}' | grep -q '^8\.'
}
missing=()
if ! has_dotnet_8_sdk; then
missing+=(dotnet-sdk-8.0)
fi
if ! command -v rg >/dev/null 2>&1; then
missing+=(ripgrep)
fi
if [[ "${#missing[@]}" -gt 0 ]]; then
if [[ "$NO_INSTALL" -eq 1 ]]; then
echo "error: missing required tools: ${missing[*]}" >&2
exit 1
fi
apt_install "${missing[@]}"
fi
if ! has_dotnet_8_sdk; then
echo "error: dotnet 8 SDK is still unavailable after package installation." >&2
exit 1
fi
if ! command -v rg >/dev/null 2>&1; then
echo "error: ripgrep is still unavailable after package installation." >&2
exit 1
fi
"$ROOT_DIR/scripts/publish-win-x64.sh"
echo
echo "Published Windows build:"
echo " $ROOT_DIR/src/Ehwrj.App/bin/Release/net8.0/win-x64/publish/Ehwrj.exe"