#!/usr/bin/env bash # Release automation for UniversalisOS. # # Usage: # tools/release.sh # 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// 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 | --bump " 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 | --bump " >&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/"