Files
FlexLove/scripts/generate_docs.sh
Michael Freno 39ccf0c450 v0.2.1 release
2025-11-16 09:36:46 -05:00

73 lines
2.5 KiB
Bash
Executable File

#!/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