#!/bin/bash set -euo pipefail # Description: Package and checksum distribution for release # Arguments: [version] - version string (default: from Cargo.toml) # Returns: 0 on success, 1 on failure # Output: Final release package path readonly SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" readonly WORKSPACE_ROOT="$(cd "${SCRIPT_DIR}/.." && pwd)" readonly DISTRO_DIR="${WORKSPACE_ROOT}/distribution" readonly RELEASE_DIR="${WORKSPACE_ROOT}/release" # Extract version from Cargo.toml get_version() { grep '^version' "${WORKSPACE_ROOT}/crates/typedialog-core/Cargo.toml" | head -1 | sed 's/.*"\([^"]*\)".*/\1/' } # Function: Print info message log_info() { echo "[INFO] $*" >&2 } # Function: Print error message log_error() { echo "[ERROR] $*" >&2 } # Function: Print success message log_success() { echo "[✓] $*" >&2 } # Function: Create release directory create_release_dir() { mkdir -p "$RELEASE_DIR" } # Function: Copy distribution packages copy_packages() { local version="$1" local distro_tar="${DISTRO_DIR}/typedialog-${version}.tar.gz" if [[ ! -f "$distro_tar" ]]; then log_error "Distribution package not found: $distro_tar" return 1 fi cp "$distro_tar" "$RELEASE_DIR/" log_success "Copied distribution package" } # Function: Generate checksums generate_checksums() { local version="$1" local checksum_file="${RELEASE_DIR}/SHA256SUMS" log_info "Generating checksums..." cd "$RELEASE_DIR" sha256sum "typedialog-${version}.tar.gz" > "$checksum_file" log_success "Checksums generated: $checksum_file" } # Function: Create release notes create_release_notes() { local version="$1" local notes_file="${RELEASE_DIR}/RELEASE_NOTES.md" cat > "$notes_file" <