diff --git a/.gitignore b/.gitignore index ef8a0b3..08aec77 100644 --- a/.gitignore +++ b/.gitignore @@ -22,7 +22,7 @@ Thumbs.db # QEMU images / large artifacts qemu-dietpi/ +out/ # Stock images (large) images/stock/ - diff --git a/tools/release/make-release.sh b/tools/release/make-release.sh new file mode 100644 index 0000000..9af25c7 --- /dev/null +++ b/tools/release/make-release.sh @@ -0,0 +1,61 @@ +#!/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/" +cp "$ROOT/pikit-services.json" "$STAGE/" 2>/dev/null || true +cp "$ROOT/set_ready.sh" "$STAGE/" 2>/dev/null || true +cp "$ROOT/start-codex.sh" "$STAGE/" 2>/dev/null || true + +echo "Packing bundle..." +tar -C "$STAGE" -czf "$BUNDLE_PATH" . + +echo "Computing sha256..." +SHA256=$(sha256sum "$BUNDLE_PATH" | awk '{print $1}') + +cat > "$MANIFEST_PATH" <