170 lines
5.6 KiB
Bash
Executable File
170 lines
5.6 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
# Local test script for release workflow
|
|
# This simulates the key steps of .github/workflows/release.yml
|
|
|
|
set -e
|
|
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
BLUE='\033[0;34m'
|
|
NC='\033[0m' # No Color
|
|
|
|
echo -e "${BLUE}==================================${NC}"
|
|
echo -e "${BLUE}Local Release Workflow Test${NC}"
|
|
echo -e "${BLUE}==================================${NC}"
|
|
echo ""
|
|
|
|
# Step 1: Extract version
|
|
echo -e "${YELLOW}Step 1: Extract version from FlexLove.lua${NC}"
|
|
VERSION=$(grep -m 1 "_VERSION" FlexLove.lua | sed -E 's/.*"([^"]+)".*/\1/')
|
|
if [ -z "$VERSION" ]; then
|
|
echo -e "${RED}Error: Could not extract version${NC}"
|
|
exit 1
|
|
fi
|
|
echo -e "${GREEN}✓ Version: ${VERSION}${NC}"
|
|
echo ""
|
|
|
|
# Step 2: Make scripts executable
|
|
echo -e "${YELLOW}Step 2: Make scripts executable${NC}"
|
|
chmod +x scripts/generate_docs.sh
|
|
chmod +x scripts/create-release.sh
|
|
chmod +x scripts/create-profile-packages.sh
|
|
chmod +x scripts/archive-docs.sh
|
|
echo -e "${GREEN}✓ Scripts are executable${NC}"
|
|
echo ""
|
|
|
|
# Step 3: Create release packages
|
|
echo -e "${YELLOW}Step 3: Create release packages${NC}"
|
|
./scripts/create-profile-packages.sh
|
|
echo ""
|
|
|
|
# Step 4: Verify all packages were created
|
|
echo -e "${YELLOW}Step 4: Verify all packages${NC}"
|
|
for profile in minimal slim default full; do
|
|
if [ ! -f "releases/flexlove-${profile}-v${VERSION}.zip" ]; then
|
|
echo -e "${RED}✗ Error: ${profile} profile package was not created${NC}"
|
|
exit 1
|
|
fi
|
|
if [ ! -f "releases/flexlove-${profile}-v${VERSION}.zip.sha256" ]; then
|
|
echo -e "${RED}✗ Error: ${profile} checksum file was not created${NC}"
|
|
exit 1
|
|
fi
|
|
SIZE=$(du -h "releases/flexlove-${profile}-v${VERSION}.zip" | cut -f1)
|
|
echo -e "${GREEN}✓ ${profile} package verified (${SIZE})${NC}"
|
|
done
|
|
echo ""
|
|
|
|
# Step 5: Verify checksums
|
|
echo -e "${YELLOW}Step 5: Verify checksums${NC}"
|
|
cd releases
|
|
if shasum -a 256 -c flexlove-*-v${VERSION}.zip.sha256 2>&1 | grep -q "OK"; then
|
|
shasum -a 256 -c flexlove-*-v${VERSION}.zip.sha256
|
|
echo -e "${GREEN}✓ All checksums verified${NC}"
|
|
else
|
|
echo -e "${RED}✗ Checksum verification failed${NC}"
|
|
exit 1
|
|
fi
|
|
cd ..
|
|
echo ""
|
|
|
|
# Step 6: Extract checksums for display
|
|
echo -e "${YELLOW}Step 6: Extract checksums for release notes${NC}"
|
|
MINIMAL_CHECKSUM=$(cat "releases/flexlove-minimal-v${VERSION}.zip.sha256" | cut -d ' ' -f 1)
|
|
SLIM_CHECKSUM=$(cat "releases/flexlove-slim-v${VERSION}.zip.sha256" | cut -d ' ' -f 1)
|
|
DEFAULT_CHECKSUM=$(cat "releases/flexlove-default-v${VERSION}.zip.sha256" | cut -d ' ' -f 1)
|
|
FULL_CHECKSUM=$(cat "releases/flexlove-full-v${VERSION}.zip.sha256" | cut -d ' ' -f 1)
|
|
|
|
echo -e "${BLUE}Minimal: ${MINIMAL_CHECKSUM}${NC}"
|
|
echo -e "${BLUE}Slim: ${SLIM_CHECKSUM}${NC}"
|
|
echo -e "${BLUE}Default: ${DEFAULT_CHECKSUM}${NC}"
|
|
echo -e "${BLUE}Full: ${FULL_CHECKSUM}${NC}"
|
|
echo ""
|
|
|
|
# Step 7: Check if pre-release
|
|
echo -e "${YELLOW}Step 7: Check if pre-release${NC}"
|
|
if [[ "$VERSION" =~ (alpha|beta|rc|dev) ]]; then
|
|
echo -e "${BLUE}This is a pre-release version${NC}"
|
|
else
|
|
echo -e "${GREEN}This is a stable release${NC}"
|
|
fi
|
|
echo ""
|
|
|
|
# Step 8: Verify package contents
|
|
echo -e "${YELLOW}Step 8: Verify package contents${NC}"
|
|
TEMP_DIR=$(mktemp -d)
|
|
for profile in minimal slim default full; do
|
|
unzip -q "releases/flexlove-${profile}-v${VERSION}.zip" -d "${TEMP_DIR}/${profile}"
|
|
|
|
# Check FlexLove.lua exists
|
|
if [ ! -f "${TEMP_DIR}/${profile}/flexlove/FlexLove.lua" ]; then
|
|
echo -e "${RED}✗ ${profile}: Missing FlexLove.lua${NC}"
|
|
exit 1
|
|
fi
|
|
|
|
# Check LICENSE exists
|
|
if [ ! -f "${TEMP_DIR}/${profile}/flexlove/LICENSE" ]; then
|
|
echo -e "${RED}✗ ${profile}: Missing LICENSE${NC}"
|
|
exit 1
|
|
fi
|
|
|
|
# Check README exists
|
|
if [ ! -f "${TEMP_DIR}/${profile}/flexlove/README.md" ]; then
|
|
echo -e "${RED}✗ ${profile}: Missing README.md${NC}"
|
|
exit 1
|
|
fi
|
|
|
|
# Count modules
|
|
MODULE_COUNT=$(find "${TEMP_DIR}/${profile}/flexlove/modules" -name "*.lua" | wc -l | tr -d ' ')
|
|
|
|
# Check themes for default and full
|
|
if [ "$profile" == "default" ] || [ "$profile" == "full" ]; then
|
|
if [ ! -d "${TEMP_DIR}/${profile}/flexlove/themes" ]; then
|
|
echo -e "${RED}✗ ${profile}: Missing themes directory${NC}"
|
|
exit 1
|
|
fi
|
|
|
|
# Verify theme files
|
|
if [ ! -f "${TEMP_DIR}/${profile}/flexlove/themes/metal.example.lua" ]; then
|
|
echo -e "${RED}✗ ${profile}: Missing metal.example.lua${NC}"
|
|
exit 1
|
|
fi
|
|
if [ ! -f "${TEMP_DIR}/${profile}/flexlove/themes/space.example.lua" ]; then
|
|
echo -e "${RED}✗ ${profile}: Missing space.example.lua${NC}"
|
|
exit 1
|
|
fi
|
|
if [ ! -f "${TEMP_DIR}/${profile}/flexlove/themes/README.md" ]; then
|
|
echo -e "${RED}✗ ${profile}: Missing themes/README.md${NC}"
|
|
exit 1
|
|
fi
|
|
|
|
# Verify no other files in themes
|
|
THEME_FILE_COUNT=$(find "${TEMP_DIR}/${profile}/flexlove/themes" -type f | wc -l | tr -d ' ')
|
|
if [ "$THEME_FILE_COUNT" != "3" ]; then
|
|
echo -e "${RED}✗ ${profile}: Expected 3 files in themes, found ${THEME_FILE_COUNT}${NC}"
|
|
find "${TEMP_DIR}/${profile}/flexlove/themes" -type f
|
|
exit 1
|
|
fi
|
|
|
|
echo -e "${GREEN}✓ ${profile}: ${MODULE_COUNT} modules + themes verified${NC}"
|
|
else
|
|
# Verify no themes for minimal and slim
|
|
if [ -d "${TEMP_DIR}/${profile}/flexlove/themes" ]; then
|
|
echo -e "${RED}✗ ${profile}: Should not have themes directory${NC}"
|
|
exit 1
|
|
fi
|
|
echo -e "${GREEN}✓ ${profile}: ${MODULE_COUNT} modules verified${NC}"
|
|
fi
|
|
done
|
|
rm -rf "$TEMP_DIR"
|
|
echo ""
|
|
|
|
echo -e "${GREEN}==================================${NC}"
|
|
echo -e "${GREEN}✓ All tests passed!${NC}"
|
|
echo -e "${GREEN}==================================${NC}"
|
|
echo ""
|
|
echo -e "${BLUE}Release packages are ready in: releases/${NC}"
|
|
echo -e "${BLUE}Version: v${VERSION}${NC}"
|
|
echo ""
|