#!/bin/bash set -e # QuoteForge Release Build Script # Creates binaries for all platforms and packages them for release # Colors RED='\033[0;31m' GREEN='\033[0;32m' YELLOW='\033[1;33m' NC='\033[0m' # No Color # Get version from git VERSION=$(git describe --tags --always --dirty 2>/dev/null || echo "dev") if [[ $VERSION == *"dirty"* ]]; then echo -e "${RED}✗ Error: Working directory has uncommitted changes${NC}" echo " Commit your changes first" exit 1 fi echo -e "${GREEN}Building QuoteForge version: ${VERSION}${NC}" echo "" ensure_release_notes() { local notes_path="$1" if [ -f "${notes_path}" ]; then echo -e "${GREEN} ✓ Preserving existing RELEASE_NOTES.md${NC}" return fi cat > "${notes_path}" < SHA256SUMS.txt 2>/dev/null || shasum -a 256 * | grep -v SHA256SUMS > SHA256SUMS.txt cd ../.. echo -e "${GREEN} ✓ SHA256SUMS.txt${NC}" # List release files echo "" echo -e "${GREEN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}" echo -e "${GREEN}Release ${VERSION} built successfully!${NC}" echo -e "${GREEN}━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━${NC}" echo "" echo "Files in ${RELEASE_DIR}:" ls -lh "${RELEASE_DIR}" echo "" # Show next steps echo -e "${YELLOW}Next steps:${NC}" echo " 1. Create git tag:" echo " git tag -a ${VERSION} -m \"Release ${VERSION}\"" echo "" echo " 2. Push tag to remote:" echo " git push origin ${VERSION}" echo "" echo " 3. Create release on git.mchus.pro:" echo " - Go to: https://git.mchus.pro/mchus/QuoteForge/releases" echo " - Click 'New Release'" echo " - Select tag: ${VERSION}" echo " - Upload files from: ${RELEASE_DIR}/" echo "" echo -e "${GREEN}Done!${NC}"