#!/usr/bin/env bash set -euo pipefail # Build a Pi-Kit release bundle (tar.gz) and a manifest.json with SHA256. # Usage: ./tools/release/make-release.sh [base_download_url] # Example base URL: https://git.44r0n.cc/44r0n7/pi-kit/releases/download/v1.0.0 if [[ $# -lt 1 ]]; then echo "Usage: $0 [base_download_url]" >&2 exit 1 fi VERSION="$1" BASE_URL="${2:-https://example.com/releases}" ROOT="$(cd "$(dirname "$0")/../.." && pwd)" OUT_DIR="$ROOT/out/releases" STAGE="$OUT_DIR/stage-$VERSION" BUNDLE_NAME="pikit-${VERSION}.tar.gz" BUNDLE_PATH="$OUT_DIR/$BUNDLE_NAME" MANIFEST_PATH="$OUT_DIR/manifest.json" rm -rf "$STAGE" mkdir -p "$STAGE" "$OUT_DIR" echo "Staging files..." # Copy managed files; adjust as needed rsync -a --delete \ --exclude 'node_modules' \ --exclude '.git' \ --exclude 'test-results' \ --exclude 'playwright-report' \ --exclude '.cache' \ --exclude '.vite' \ "$ROOT/pikit-web/" "$STAGE/pikit-web/" cp "$ROOT/pikit-api.py" "$STAGE/" rsync -a "$ROOT/pikit_api/" "$STAGE/pikit_api/" cp "$ROOT/pikit-services.json" "$STAGE/" 2>/dev/null || true # Include version marker if [[ -f "$ROOT/pikit-web/data/version.json" ]]; then mkdir -p "$STAGE/pikit-web/data" cp "$ROOT/pikit-web/data/version.json" "$STAGE/pikit-web/data/version.json" else mkdir -p "$STAGE/pikit-web/data" echo "{\"version\": \"$VERSION\"}" > "$STAGE/pikit-web/data/version.json" fi echo "Packing bundle..." tar -C "$STAGE" -czf "$BUNDLE_PATH" . echo "Computing sha256..." SHA256=$(sha256sum "$BUNDLE_PATH" | awk '{print $1}') cat > "$MANIFEST_PATH" <