70 lines
1.9 KiB
Bash
Executable File
70 lines
1.9 KiB
Bash
Executable File
#!/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 <version> [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 <version> [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" <<EOF
|
|
{
|
|
"version": "$VERSION",
|
|
"bundle": "$BASE_URL/$BUNDLE_NAME",
|
|
"changelog": "$BASE_URL/CHANGELOG-$VERSION.txt",
|
|
"files": [
|
|
{ "path": "bundle.tar.gz", "sha256": "$SHA256" }
|
|
]
|
|
}
|
|
EOF
|
|
|
|
echo "Done."
|
|
echo "Bundle : $BUNDLE_PATH"
|
|
echo "Manifest: $MANIFEST_PATH"
|
|
echo "Upload both to your release (bundle as $BUNDLE_NAME, manifest as manifest.json)."
|