v0.2.1 release
This commit is contained in:
58
scripts/archive-docs.sh
Executable file
58
scripts/archive-docs.sh
Executable file
@@ -0,0 +1,58 @@
|
||||
#!/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 Documentation Archival${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}"
|
||||
|
||||
if [ ! -f "docs/api.html" ]; then
|
||||
echo -e "${RED}Error: docs/api.html not found${NC}"
|
||||
echo "Please run ./scripts/generate_docs.sh first"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
VERSION_DIR="docs/versions/v${VERSION}"
|
||||
if [ -d "$VERSION_DIR" ]; then
|
||||
echo -e "${YELLOW}Warning: $VERSION_DIR already exists${NC}"
|
||||
read -p "Overwrite? (y/n) " -n 1 -r
|
||||
echo
|
||||
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
|
||||
echo -e "${RED}Aborted${NC}"
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
echo -e "${YELLOW}Creating version directory...${NC}"
|
||||
mkdir -p "$VERSION_DIR"
|
||||
fi
|
||||
|
||||
echo -e "${YELLOW}Archiving documentation...${NC}"
|
||||
cp docs/api.html "$VERSION_DIR/api.html"
|
||||
|
||||
if [ ! -f "$VERSION_DIR/api.html" ]; then
|
||||
echo -e "${RED}Error: Failed to copy documentation${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
FILE_SIZE=$(du -h "$VERSION_DIR/api.html" | cut -f1)
|
||||
|
||||
echo ""
|
||||
echo -e "${GREEN}✓ Documentation archived successfully!${NC}"
|
||||
echo ""
|
||||
echo -e " ${BLUE}Version:${NC} v${VERSION}"
|
||||
echo -e " ${BLUE}Location:${NC} $VERSION_DIR/api.html"
|
||||
echo -e " ${BLUE}Size:${NC} $FILE_SIZE"
|
||||
echo ""
|
||||
99
scripts/create-release.sh
Executable file
99
scripts/create-release.sh
Executable file
@@ -0,0 +1,99 @@
|
||||
#!/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 Release 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
|
||||
|
||||
OUTPUT_FILE="${RELEASE_DIR}/flexlove-v${VERSION}.zip"
|
||||
|
||||
CHECKSUM_FILE="${OUTPUT_FILE}.sha256"
|
||||
if [ -f "$OUTPUT_FILE" ] || [ -f "$CHECKSUM_FILE" ]; then
|
||||
echo -e "${YELLOW}Warning: Release files already exist - overwriting${NC}"
|
||||
[ -f "$OUTPUT_FILE" ] && echo " - $OUTPUT_FILE" && rm "$OUTPUT_FILE"
|
||||
[ -f "$CHECKSUM_FILE" ] && echo " - $CHECKSUM_FILE" && rm "$CHECKSUM_FILE"
|
||||
fi
|
||||
|
||||
TEMP_DIR=$(mktemp -d)
|
||||
BUILD_DIR="${TEMP_DIR}/flexlove"
|
||||
|
||||
echo -e "${YELLOW}Creating release package...${NC}"
|
||||
|
||||
mkdir -p "$BUILD_DIR"
|
||||
|
||||
echo " → Copying FlexLove.lua"
|
||||
cp FlexLove.lua "$BUILD_DIR/"
|
||||
|
||||
echo " → Copying modules/"
|
||||
cp -r modules "$BUILD_DIR/"
|
||||
|
||||
echo " → Copying LICENSE"
|
||||
cp LICENSE "$BUILD_DIR/"
|
||||
|
||||
echo " → Creating README.md"
|
||||
cp README.md "$BUILD_DIR/"
|
||||
|
||||
echo -e "${YELLOW}Creating zip archive...${NC}"
|
||||
|
||||
ABS_OUTPUT_FILE="$(cd "$(dirname "$OUTPUT_FILE")" && pwd)/$(basename "$OUTPUT_FILE")"
|
||||
|
||||
cd "$TEMP_DIR"
|
||||
zip -r -q "flexlove-v${VERSION}.zip" flexlove/
|
||||
|
||||
mv "flexlove-v${VERSION}.zip" "$ABS_OUTPUT_FILE"
|
||||
cd - > /dev/null
|
||||
|
||||
echo -e "${YELLOW}Generating SHA256 checksum...${NC}"
|
||||
CHECKSUM_FILE="${OUTPUT_FILE}.sha256"
|
||||
cd "$RELEASE_DIR"
|
||||
shasum -a 256 "flexlove-v${VERSION}.zip" > "flexlove-v${VERSION}.zip.sha256"
|
||||
cd - > /dev/null
|
||||
|
||||
CHECKSUM=$(cat "$CHECKSUM_FILE" | cut -d ' ' -f 1)
|
||||
|
||||
echo -e "${YELLOW}Cleaning up...${NC}"
|
||||
rm -rf "$TEMP_DIR"
|
||||
|
||||
FILE_SIZE=$(du -h "$OUTPUT_FILE" | cut -f1)
|
||||
|
||||
echo ""
|
||||
echo -e "${GREEN}✓ Release created successfully!${NC}"
|
||||
echo ""
|
||||
echo -e " ${BLUE}File:${NC} $OUTPUT_FILE"
|
||||
echo -e " ${BLUE}Size:${NC} $FILE_SIZE"
|
||||
echo -e " ${BLUE}Version:${NC} $VERSION"
|
||||
echo -e " ${BLUE}SHA256:${NC} $CHECKSUM"
|
||||
echo ""
|
||||
echo -e "Contents:"
|
||||
echo " - FlexLove.lua"
|
||||
echo " - modules/ (27 files)"
|
||||
echo " - LICENSE"
|
||||
echo " - README.txt"
|
||||
echo ""
|
||||
echo -e "Files created:"
|
||||
echo " - $OUTPUT_FILE"
|
||||
echo " - $CHECKSUM_FILE"
|
||||
echo ""
|
||||
echo -e "${YELLOW}Verify checksum:${NC}"
|
||||
echo " cd releases && shasum -a 256 -c flexlove-v${VERSION}.zip.sha256"
|
||||
72
scripts/generate_docs.sh
Executable file
72
scripts/generate_docs.sh
Executable file
@@ -0,0 +1,72 @@
|
||||
#!/bin/bash
|
||||
|
||||
YELLOW='\033[1;33m'
|
||||
GREEN='\033[0;32m'
|
||||
NC='\033[0m'
|
||||
|
||||
echo "Generating FlexLöve documentation..."
|
||||
|
||||
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
PROJECT_ROOT="$( cd "$SCRIPT_DIR/.." && pwd )"
|
||||
cd "$PROJECT_ROOT"
|
||||
|
||||
if [ -f "docs/api.html" ]; then
|
||||
echo -e "${YELLOW}Checking for previous documentation version...${NC}"
|
||||
OLD_VERSION=$(grep -o 'FlexLöve v[0-9.]*' docs/api.html | head -1 | sed 's/FlexLöve v//')
|
||||
CURRENT_VERSION=$(grep -m 1 "_VERSION" FlexLove.lua | sed -E 's/.*"([^"]+)".*/\1/')
|
||||
|
||||
if [ -n "$OLD_VERSION" ] && [ "$OLD_VERSION" != "$CURRENT_VERSION" ]; then
|
||||
echo -e "${YELLOW}Found previous version v${OLD_VERSION}, archiving before generating new docs...${NC}"
|
||||
mkdir -p "docs/versions/v${OLD_VERSION}"
|
||||
cp docs/api.html "docs/versions/v${OLD_VERSION}/api.html"
|
||||
echo -e "${GREEN}✓ Archived previous documentation to docs/versions/v${OLD_VERSION}/${NC}"
|
||||
elif [ -n "$OLD_VERSION" ] && [ "$OLD_VERSION" = "$CURRENT_VERSION" ]; then
|
||||
echo -e "${YELLOW}Same version (v${OLD_VERSION}), will overwrite current documentation${NC}"
|
||||
fi
|
||||
fi
|
||||
|
||||
if ! command -v lua-language-server &> /dev/null; then
|
||||
echo "Error: lua-language-server not found. Please install it first."
|
||||
echo " macOS: brew install lua-language-server"
|
||||
echo " Linux: See https://github.com/LuaLS/lua-language-server"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
mkdir -p docs
|
||||
|
||||
echo "Running lua-language-server documentation export..."
|
||||
lua-language-server \
|
||||
--doc="$PROJECT_ROOT" \
|
||||
--doc_out_path="$PROJECT_ROOT/docs"
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
echo "✓ Markdown documentation generated"
|
||||
|
||||
echo "Building beautiful HTML documentation..."
|
||||
cd "$PROJECT_ROOT/docs"
|
||||
|
||||
if [ ! -d "node_modules" ]; then
|
||||
echo "Installing Node.js dependencies..."
|
||||
npm install --silent
|
||||
fi
|
||||
|
||||
npm run build --silent
|
||||
|
||||
if [ $? -eq 0 ]; then
|
||||
echo -e "${GREEN}✓ HTML documentation built successfully!${NC}"
|
||||
echo ""
|
||||
echo "Generated files:"
|
||||
echo " - docs/api.html (Beautiful, searchable API reference)"
|
||||
echo " - docs/index.html (Landing page)"
|
||||
echo " - docs/doc.md (Raw markdown)"
|
||||
if [ -n "$OLD_VERSION" ] && [ "$OLD_VERSION" != "$CURRENT_VERSION" ]; then
|
||||
echo " - docs/versions/v${OLD_VERSION}/api.html (Previous version archived)"
|
||||
fi
|
||||
else
|
||||
echo "✗ HTML build failed, but markdown docs are available"
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
echo "✗ Documentation generation failed"
|
||||
exit 1
|
||||
fi
|
||||
177
scripts/make-tag.sh
Executable file
177
scripts/make-tag.sh
Executable file
@@ -0,0 +1,177 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -e
|
||||
|
||||
RED='\033[0;31m'
|
||||
GREEN='\033[0;32m'
|
||||
YELLOW='\033[1;33m'
|
||||
BLUE='\033[0;34m'
|
||||
CYAN='\033[0;36m'
|
||||
NC='\033[0m' # No Color
|
||||
|
||||
echo -e "${BLUE}═══════════════════════════════════════${NC}"
|
||||
echo -e "${BLUE} FlexLöve Version Bump & Tag Tool ${NC}"
|
||||
echo -e "${BLUE}═══════════════════════════════════════${NC}"
|
||||
echo ""
|
||||
|
||||
SCRIPT_DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"
|
||||
PROJECT_ROOT="$( cd "$SCRIPT_DIR/.." && pwd )"
|
||||
cd "$PROJECT_ROOT"
|
||||
|
||||
if [ ! -d .git ] && [ ! -f .git ]; then
|
||||
echo -e "${RED}Error: Not in a git repository${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if ! git diff-index --quiet HEAD --; then
|
||||
echo -e "${YELLOW}Warning: You have uncommitted changes${NC}"
|
||||
git status --short
|
||||
echo ""
|
||||
read -p "Continue anyway? (y/n) " -n 1 -r
|
||||
echo
|
||||
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
|
||||
echo -e "${RED}Aborted${NC}"
|
||||
exit 1
|
||||
fi
|
||||
echo ""
|
||||
fi
|
||||
|
||||
CURRENT_VERSION=$(grep -m 1 "_VERSION" FlexLove.lua | sed -E 's/.*"([^"]+)".*/\1/')
|
||||
if [ -z "$CURRENT_VERSION" ]; then
|
||||
echo -e "${RED}Error: Could not extract version from FlexLove.lua${NC}"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
echo -e "${CYAN}Current version:${NC} ${GREEN}v${CURRENT_VERSION}${NC}"
|
||||
echo ""
|
||||
|
||||
IFS='.' read -r MAJOR MINOR PATCH <<< "$CURRENT_VERSION"
|
||||
|
||||
MAJOR=$(echo "$MAJOR" | sed 's/[^0-9].*//')
|
||||
MINOR=$(echo "$MINOR" | sed 's/[^0-9].*//')
|
||||
PATCH=$(echo "$PATCH" | sed 's/[^0-9].*//')
|
||||
|
||||
echo -e "${CYAN}Select version bump type:${NC}"
|
||||
echo " 1) Major (breaking changes) ${MAJOR}.${MINOR}.${PATCH} → $((MAJOR+1)).0.0"
|
||||
echo " 2) Minor (new features) ${MAJOR}.${MINOR}.${PATCH} → ${MAJOR}.$((MINOR+1)).0"
|
||||
echo " 3) Patch (bug fixes) ${MAJOR}.${MINOR}.${PATCH} → ${MAJOR}.${MINOR}.$((PATCH+1))"
|
||||
echo " 4) Custom version"
|
||||
echo " 5) Cancel"
|
||||
echo ""
|
||||
read -p "Enter choice (1-5): " -n 1 -r CHOICE
|
||||
echo ""
|
||||
echo ""
|
||||
|
||||
case $CHOICE in
|
||||
1)
|
||||
NEW_MAJOR=$((MAJOR+1))
|
||||
NEW_MINOR=0
|
||||
NEW_PATCH=0
|
||||
BUMP_TYPE="major"
|
||||
;;
|
||||
2)
|
||||
NEW_MAJOR=$MAJOR
|
||||
NEW_MINOR=$((MINOR+1))
|
||||
NEW_PATCH=0
|
||||
BUMP_TYPE="minor"
|
||||
;;
|
||||
3)
|
||||
NEW_MAJOR=$MAJOR
|
||||
NEW_MINOR=$MINOR
|
||||
NEW_PATCH=$((PATCH+1))
|
||||
BUMP_TYPE="patch"
|
||||
;;
|
||||
4)
|
||||
read -p "Enter custom version (e.g., 1.0.0-beta): " CUSTOM_VERSION
|
||||
NEW_VERSION="$CUSTOM_VERSION"
|
||||
BUMP_TYPE="custom"
|
||||
;;
|
||||
5)
|
||||
echo -e "${RED}Cancelled${NC}"
|
||||
exit 0
|
||||
;;
|
||||
*)
|
||||
echo -e "${RED}Invalid choice${NC}"
|
||||
exit 1
|
||||
;;
|
||||
esac
|
||||
|
||||
# Construct new version (unless custom)
|
||||
if [ "$BUMP_TYPE" != "custom" ]; then
|
||||
NEW_VERSION="${NEW_MAJOR}.${NEW_MINOR}.${NEW_PATCH}"
|
||||
fi
|
||||
|
||||
echo -e "${CYAN}New version:${NC} ${GREEN}v${NEW_VERSION}${NC}"
|
||||
echo ""
|
||||
echo -e "${YELLOW}This will:${NC}"
|
||||
echo " 1. Update FlexLove.lua → flexlove._VERSION = \"${NEW_VERSION}\""
|
||||
echo " 2. Update README.md → first line version"
|
||||
echo " 3. Stage changes for commit"
|
||||
echo " 4. Create git tag v${NEW_VERSION}"
|
||||
echo ""
|
||||
read -p "Proceed? (y/n) " -n 1 -r
|
||||
echo ""
|
||||
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
|
||||
echo -e "${RED}Aborted${NC}"
|
||||
exit 1
|
||||
fi
|
||||
echo ""
|
||||
|
||||
echo -e "${CYAN}[1/4]${NC} Updating FlexLove.lua..."
|
||||
sed -i.bak "s/flexlove\._VERSION = \".*\"/flexlove._VERSION = \"${NEW_VERSION}\"/" FlexLove.lua
|
||||
rm -f FlexLove.lua.bak
|
||||
echo -e "${GREEN}✓ FlexLove.lua updated${NC}"
|
||||
|
||||
echo -e "${CYAN}[2/4]${NC} Updating README.md..."
|
||||
FIRST_LINE=$(head -1 README.md)
|
||||
if [[ "$FIRST_LINE" =~ ^#.*FlexLöve.*v[0-9]+\.[0-9]+\.[0-9]+ ]]; then
|
||||
sed -i.bak -E "1s/v[0-9]+\.[0-9]+\.[0-9]+/v${NEW_VERSION}/" README.md
|
||||
rm -f README.md.bak
|
||||
echo -e "${GREEN}✓ README.md updated${NC}"
|
||||
else
|
||||
echo -e "${YELLOW}⚠ README.md first line doesn't match expected format, skipping${NC}"
|
||||
echo -e "${YELLOW}Expected: # FlexLöve v0.0.0${NC}"
|
||||
echo -e "${YELLOW}Found: $FIRST_LINE${NC}"
|
||||
fi
|
||||
|
||||
echo -e "${CYAN}[3/4]${NC} Staging changes..."
|
||||
git add FlexLove.lua README.md
|
||||
echo -e "${GREEN}✓ Changes staged${NC}"
|
||||
|
||||
echo ""
|
||||
echo -e "${CYAN}Changes to be committed:${NC}"
|
||||
git diff --cached --stat
|
||||
echo ""
|
||||
|
||||
echo -e "${YELLOW}Ready to commit and create tag${NC}"
|
||||
echo -e "${CYAN}Commit message:${NC} v${NEW_VERSION} release"
|
||||
echo -e "${CYAN}Tag:${NC} v${NEW_VERSION}"
|
||||
echo ""
|
||||
read -p "Commit changes and create tag? (y/n) " -n 1 -r
|
||||
echo ""
|
||||
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
|
||||
echo -e "${YELLOW}Changes staged but not committed${NC}"
|
||||
echo "You can:"
|
||||
echo " - Review changes: git diff --cached"
|
||||
echo " - Commit manually: git commit -m 'v${NEW_VERSION} release'"
|
||||
echo " - Unstage: git restore --staged FlexLove.lua README.md"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
# Commit changes
|
||||
echo ""
|
||||
echo -e "${CYAN}[4/4]${NC} Committing and tagging..."
|
||||
git commit -m "v${NEW_VERSION} release"
|
||||
git tag -a "v${NEW_VERSION}" -m "Release version ${NEW_VERSION}"
|
||||
|
||||
echo ""
|
||||
echo -e "${GREEN}═══════════════════════════════════════${NC}"
|
||||
echo -e "${GREEN}✓ Version bump complete!${NC}"
|
||||
echo -e "${GREEN}═══════════════════════════════════════${NC}"
|
||||
echo ""
|
||||
echo -e "${CYAN}Version:${NC} ${CURRENT_VERSION} → ${GREEN}${NEW_VERSION}${NC}"
|
||||
echo -e "${CYAN}Tag created:${NC} ${GREEN}v${NEW_VERSION}${NC}"
|
||||
echo ""
|
||||
echo -e "${BLUE}Release will be available at:${NC}"
|
||||
echo " https://github.com/$(git remote get-url origin | sed 's/.*github.com[:/]\(.*\)\.git/\1/')/releases/tag/v${NEW_VERSION}"
|
||||
echo ""
|
||||
Reference in New Issue
Block a user