#!/bin/bash set -euo pipefail ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" cd "$ROOT" current_version="$(cat VERSION)" if [[ $# -eq 1 ]]; then version="$1" else IFS='.' read -r major minor patch <<< "$current_version" version="${major}.${minor}.$((patch + 1))" fi package_name="ekklesia-classroom_${version}_amd64.deb" package_path="$ROOT/dist/$package_name" echo "Current version: $current_version" echo "New canary: $version" echo "$ROOT/tools/build-release.sh" "$version" # Validate the exact artifact that will be published. If a previous canary is # available locally, exercise the real upgrade path as well as a fresh install. validation_args=("$package_path") if [[ -f "$ROOT/repo/canary/manifest.json" ]]; then previous_package_name="$(python3 -c \ 'import json; print(json.load(open("repo/canary/manifest.json"))["package"].rsplit("/", 1)[-1])')" previous_package="$ROOT/repo/packages/$previous_package_name" if [[ -f "$previous_package" && "$previous_package" != "$package_path" ]]; then validation_args+=("$previous_package") fi fi "$ROOT/tools/validate-trixie-release.sh" "${validation_args[@]}" hash="$(sha256sum "$package_path" | awk '{print $1}')" mkdir -p "$ROOT/repo/packages" "$ROOT/repo/canary" cp "$package_path" "$ROOT/repo/packages/$package_name" cat > "$ROOT/repo/canary/manifest.json" <