universalisos/tools/release.sh

78 lines
1.8 KiB
Bash
Executable file

#!/usr/bin/env bash
# Release automation for UniversalisOS.
#
# Usage:
# tools/release.sh <version> # e.g. tools/release.sh 1.0.0-beta.1
# tools/release.sh --bump patch # auto-bump current version
#
# Steps:
# 1. Update VERSION file
# 2. Create git tag
# 3. Build all architectures
# 4. Package release tarball in release/<version>/
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
REPO_ROOT="$(cd "$SCRIPT_DIR/.." && pwd)"
VERSION_FILE="$REPO_ROOT/VERSION"
cd "$REPO_ROOT"
# --- Parse arguments ---
NEW_VERSION=""
BUMP=""
while [[ $# -gt 0 ]]; do
case "$1" in
--bump)
BUMP="$2"
shift 2
;;
-h|--help)
echo "Usage: $0 <version> | --bump <major|minor|patch>"
exit 0
;;
*)
NEW_VERSION="$1"
shift
;;
esac
done
# --- Resolve version ---
if [[ -n "$BUMP" ]]; then
NEW_VERSION="$(python3 tools/version.py --bump "$BUMP")"
fi
if [[ -z "$NEW_VERSION" ]]; then
echo "error: provide a version or use --bump" >&2
echo "Usage: $0 <version> | --bump <major|minor|patch>" >&2
exit 1
fi
echo "==> Releasing UniversalisOS $NEW_VERSION"
echo ""
# --- Update VERSION file ---
echo "$NEW_VERSION" > VERSION
echo "[1/4] Updated VERSION file to $NEW_VERSION"
# --- Create git tag ---
git add VERSION
git commit -m "release: v$NEW_VERSION"
git tag -a "v$NEW_VERSION" -m "Release v$NEW_VERSION"
echo "[2/4] Created git tag v$NEW_VERSION"
# --- Build all architectures ---
echo "[3/4] Building all architectures..."
bash tools/build-release.sh "$NEW_VERSION"
# --- Package release ---
echo "[4/4] Packaging release..."
bash tools/package.sh "$NEW_VERSION"
echo ""
echo "==> Release v$NEW_VERSION complete"
echo " Artifacts: release/$NEW_VERSION/"
ls -la "release/$NEW_VERSION/"