selectable releases
This commit is contained in:
206
scripts/create-profile-packages.sh
Executable file
206
scripts/create-profile-packages.sh
Executable file
@@ -0,0 +1,206 @@
|
||||
#!/bin/bash
|
||||
|
||||
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}FlexLöve Profile Package Builder${NC}"
|
||||
echo ""
|
||||
|
||||
VERSION=$(grep -m 1 "_VERSION" FlexLove.lua | sed -E 's/.*"([^"]+)".*/\1/')
|
||||
if [ -z "$VERSION" ]; then
|
||||
echo -e "${RED}Error: Could not extract version from FlexLove.lua${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo -e "${GREEN}Version detected: ${VERSION}${NC}"
|
||||
|
||||
# Create releases directory if it doesn't exist
|
||||
RELEASE_DIR="releases"
|
||||
if [ ! -d "$RELEASE_DIR" ]; then
|
||||
echo -e "${YELLOW}Creating releases directory...${NC}"
|
||||
mkdir -p "$RELEASE_DIR"
|
||||
fi
|
||||
|
||||
# Function to get profile description
|
||||
get_description() {
|
||||
case "$1" in
|
||||
minimal) echo "Core modules only - smallest bundle size (~60%)" ;;
|
||||
slim) echo "Minimal + Animation and Image support (~80%)" ;;
|
||||
default) echo "Slim + Theme and Blur (~95%)" ;;
|
||||
full) echo "All modules including debugging tools (100%)" ;;
|
||||
esac
|
||||
}
|
||||
|
||||
# Function to get modules for a profile
|
||||
get_modules() {
|
||||
case "$1" in
|
||||
minimal)
|
||||
echo "utils.lua Units.lua Context.lua StateManager.lua ErrorHandler.lua Color.lua InputEvent.lua TextEditor.lua LayoutEngine.lua Renderer.lua EventHandler.lua ScrollManager.lua Element.lua RoundedRect.lua Grid.lua GestureRecognizer.lua ModuleLoader.lua"
|
||||
;;
|
||||
slim)
|
||||
echo "utils.lua Units.lua Context.lua StateManager.lua ErrorHandler.lua Color.lua InputEvent.lua TextEditor.lua LayoutEngine.lua Renderer.lua EventHandler.lua ScrollManager.lua Element.lua RoundedRect.lua Grid.lua GestureRecognizer.lua Animation.lua ImageRenderer.lua ImageScaler.lua ImageCache.lua ModuleLoader.lua"
|
||||
;;
|
||||
default)
|
||||
echo "utils.lua Units.lua Context.lua StateManager.lua ErrorHandler.lua Color.lua InputEvent.lua TextEditor.lua LayoutEngine.lua Renderer.lua EventHandler.lua ScrollManager.lua Element.lua RoundedRect.lua Grid.lua GestureRecognizer.lua Animation.lua NinePatch.lua ImageRenderer.lua ImageScaler.lua ImageCache.lua Theme.lua Blur.lua ModuleLoader.lua"
|
||||
;;
|
||||
full)
|
||||
echo "utils.lua Units.lua Context.lua StateManager.lua ErrorHandler.lua Color.lua InputEvent.lua TextEditor.lua LayoutEngine.lua Renderer.lua EventHandler.lua ScrollManager.lua Element.lua RoundedRect.lua Grid.lua GestureRecognizer.lua Animation.lua NinePatch.lua ImageRenderer.lua ImageScaler.lua ImageCache.lua Theme.lua Blur.lua Performance.lua ModuleLoader.lua"
|
||||
;;
|
||||
esac
|
||||
}
|
||||
|
||||
# Build each profile
|
||||
for profile in minimal slim default full; do
|
||||
echo ""
|
||||
echo -e "${YELLOW}Building ${profile} profile...${NC}"
|
||||
description=$(get_description "$profile")
|
||||
echo -e "${BLUE}${description}${NC}"
|
||||
|
||||
OUTPUT_FILE="${RELEASE_DIR}/flexlove-${profile}-v${VERSION}.zip"
|
||||
CHECKSUM_FILE="${OUTPUT_FILE}.sha256"
|
||||
|
||||
# Remove existing files
|
||||
if [ -f "$OUTPUT_FILE" ] || [ -f "$CHECKSUM_FILE" ]; then
|
||||
echo -e "${YELLOW}Removing existing files...${NC}"
|
||||
[ -f "$OUTPUT_FILE" ] && rm "$OUTPUT_FILE"
|
||||
[ -f "$CHECKSUM_FILE" ] && rm "$CHECKSUM_FILE"
|
||||
fi
|
||||
|
||||
# Create temp directory
|
||||
TEMP_DIR=$(mktemp -d)
|
||||
BUILD_DIR="${TEMP_DIR}/flexlove"
|
||||
|
||||
mkdir -p "$BUILD_DIR/modules"
|
||||
|
||||
echo " → Copying FlexLove.lua"
|
||||
cp FlexLove.lua "$BUILD_DIR/"
|
||||
|
||||
echo " → Copying LICENSE"
|
||||
cp LICENSE "$BUILD_DIR/"
|
||||
|
||||
echo " → Creating README.md"
|
||||
# Create profile-specific README
|
||||
profile_upper=$(echo "${profile}" | awk '{print toupper(substr($0,1,1)) tolower(substr($0,2))}')
|
||||
cat > "$BUILD_DIR/README.md" << EOF
|
||||
# FlexLöve v${VERSION} - ${profile_upper} Profile
|
||||
|
||||
${description}
|
||||
|
||||
This package contains the **${profile}** build profile of FlexLöve.
|
||||
|
||||
## Installation
|
||||
|
||||
\`\`\`bash
|
||||
unzip flexlove-${profile}-v${VERSION}.zip
|
||||
cp -r flexlove/modules ./
|
||||
cp flexlove/FlexLove.lua ./
|
||||
\`\`\`
|
||||
|
||||
## What's Included
|
||||
|
||||
- **FlexLove.lua** - Main library file
|
||||
- **modules/** - ${profile_upper} profile modules
|
||||
- **LICENSE** - MIT License
|
||||
|
||||
## Requirements
|
||||
|
||||
- LÖVE2D 11.0 or higher
|
||||
|
||||
## Documentation
|
||||
|
||||
📚 [View Full Documentation](https://mikefreno.github.io/FlexLove/)
|
||||
|
||||
## Build Profile
|
||||
|
||||
This is the **${profile}** profile. Other profiles available:
|
||||
|
||||
- **minimal** - Core functionality only (~60%)
|
||||
- **slim** - Adds animations and image support (~80%)
|
||||
- **default** - Adds themes and blur effects (~95%)
|
||||
- **full** - All modules including debugging tools (100%)
|
||||
|
||||
Visit the [releases page](https://github.com/mikefreno/FlexLove/releases) to download other profiles.
|
||||
|
||||
## License
|
||||
|
||||
MIT License - see LICENSE file for details.
|
||||
EOF
|
||||
|
||||
# Copy only the modules for this profile
|
||||
echo " → Copying modules for ${profile} profile"
|
||||
module_list=$(get_modules "$profile")
|
||||
module_count=0
|
||||
for module in $module_list; do
|
||||
if [ -f "modules/$module" ]; then
|
||||
cp "modules/$module" "$BUILD_DIR/modules/"
|
||||
((module_count++))
|
||||
else
|
||||
echo -e "${RED}Warning: Module not found: modules/$module${NC}"
|
||||
fi
|
||||
done
|
||||
echo " Copied ${module_count} modules"
|
||||
|
||||
# Copy themes for default and full profiles
|
||||
if [ "$profile" == "default" ] || [ "$profile" == "full" ]; then
|
||||
echo " → Copying themes/"
|
||||
mkdir -p "$BUILD_DIR/themes"
|
||||
|
||||
# Copy README
|
||||
if [ -f "themes/README.md" ]; then
|
||||
cp "themes/README.md" "$BUILD_DIR/themes/"
|
||||
fi
|
||||
|
||||
# Copy theme files as .example.lua
|
||||
if [ -f "themes/metal.lua" ]; then
|
||||
cp "themes/metal.lua" "$BUILD_DIR/themes/metal.example.lua"
|
||||
fi
|
||||
if [ -f "themes/space.lua" ]; then
|
||||
cp "themes/space.lua" "$BUILD_DIR/themes/space.example.lua"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Create zip archive
|
||||
echo " → Creating zip archive"
|
||||
ABS_OUTPUT_FILE="$(cd "$(dirname "$OUTPUT_FILE")" && pwd)/$(basename "$OUTPUT_FILE")"
|
||||
|
||||
cd "$TEMP_DIR"
|
||||
zip -r -q "flexlove-${profile}-v${VERSION}.zip" flexlove/
|
||||
mv "flexlove-${profile}-v${VERSION}.zip" "$ABS_OUTPUT_FILE"
|
||||
cd - > /dev/null
|
||||
|
||||
# Generate checksum
|
||||
echo " → Generating SHA256 checksum"
|
||||
cd "$RELEASE_DIR"
|
||||
shasum -a 256 "flexlove-${profile}-v${VERSION}.zip" > "flexlove-${profile}-v${VERSION}.zip.sha256"
|
||||
cd - > /dev/null
|
||||
|
||||
# Cleanup
|
||||
rm -rf "$TEMP_DIR"
|
||||
|
||||
# Report
|
||||
FILE_SIZE=$(du -h "$OUTPUT_FILE" | cut -f1)
|
||||
CHECKSUM=$(cat "$CHECKSUM_FILE" | cut -d ' ' -f 1)
|
||||
|
||||
echo -e "${GREEN}✓ ${profile} profile created${NC}"
|
||||
echo -e " ${BLUE}File:${NC} $OUTPUT_FILE"
|
||||
echo -e " ${BLUE}Size:${NC} $FILE_SIZE"
|
||||
echo -e " ${BLUE}Modules:${NC} ${module_count}"
|
||||
echo -e " ${BLUE}SHA256:${NC} ${CHECKSUM:0:16}..."
|
||||
done
|
||||
|
||||
echo ""
|
||||
echo -e "${GREEN}✓ All profile packages created successfully!${NC}"
|
||||
echo ""
|
||||
echo -e "${BLUE}Created packages:${NC}"
|
||||
for profile in minimal slim default full; do
|
||||
FILE_SIZE=$(du -h "${RELEASE_DIR}/flexlove-${profile}-v${VERSION}.zip" | cut -f1)
|
||||
echo " - flexlove-${profile}-v${VERSION}.zip (${FILE_SIZE})"
|
||||
done
|
||||
echo ""
|
||||
echo -e "${YELLOW}Verify checksums:${NC}"
|
||||
echo " cd releases && shasum -a 256 -c flexlove-*-v${VERSION}.zip.sha256"
|
||||
Reference in New Issue
Block a user