117 lines
3.7 KiB
Bash
Executable File
117 lines
3.7 KiB
Bash
Executable File
#!/bin/bash
|
|
# TYPO3 DDEV Prerequisites Validation Script
|
|
# Auto-generated by enhanced typo3-ddev skill
|
|
#
|
|
# This script validates all prerequisites for DDEV TYPO3 development:
|
|
# - Docker daemon running
|
|
# - Docker CLI version >= 20.10
|
|
# - Docker Compose version >= 2.0
|
|
# - DDEV installed
|
|
# - TYPO3 extension project structure
|
|
|
|
set -e
|
|
|
|
# Colors for output
|
|
RED='\033[0;31m'
|
|
GREEN='\033[0;32m'
|
|
YELLOW='\033[1;33m'
|
|
NC='\033[0m' # No Color
|
|
|
|
echo "🔍 Validating TYPO3 DDEV Prerequisites..."
|
|
echo ""
|
|
|
|
FAILED=0
|
|
|
|
# 1. Docker daemon
|
|
echo -n "Checking Docker daemon... "
|
|
if docker info >/dev/null 2>&1; then
|
|
echo -e "${GREEN}✅ Running${NC}"
|
|
else
|
|
echo -e "${RED}❌ Not running${NC}"
|
|
echo ""
|
|
echo "Docker daemon is not running. Start it with:"
|
|
echo " Linux/WSL2: sudo service docker start"
|
|
echo " macOS: Open Docker Desktop"
|
|
echo " Windows: Open Docker Desktop"
|
|
FAILED=1
|
|
fi
|
|
|
|
# 2. Docker version
|
|
echo -n "Checking Docker CLI version... "
|
|
DOCKER_VERSION=$(docker version --format '{{.Client.Version}}' 2>/dev/null || echo "")
|
|
if [ -n "$DOCKER_VERSION" ]; then
|
|
MAJOR=$(echo "$DOCKER_VERSION" | cut -d. -f1)
|
|
MINOR=$(echo "$DOCKER_VERSION" | cut -d. -f2)
|
|
if [ "$MAJOR" -gt 20 ] || ([ "$MAJOR" -eq 20 ] && [ "$MINOR" -ge 10 ]); then
|
|
echo -e "${GREEN}✅ $DOCKER_VERSION (>= 20.10)${NC}"
|
|
else
|
|
echo -e "${YELLOW}⚠️ $DOCKER_VERSION (need >= 20.10)${NC}"
|
|
echo " Update Docker to version 20.10 or newer"
|
|
FAILED=1
|
|
fi
|
|
else
|
|
echo -e "${RED}❌ Not installed${NC}"
|
|
FAILED=1
|
|
fi
|
|
|
|
# 3. Docker Compose version
|
|
echo -n "Checking Docker Compose version... "
|
|
COMPOSE_VERSION=$(docker compose version --short 2>/dev/null || echo "")
|
|
if [ -n "$COMPOSE_VERSION" ]; then
|
|
COMPOSE_MAJOR=$(echo "$COMPOSE_VERSION" | cut -d. -f1)
|
|
if [ "$COMPOSE_MAJOR" -ge 2 ]; then
|
|
echo -e "${GREEN}✅ $COMPOSE_VERSION (>= 2.0)${NC}"
|
|
else
|
|
echo -e "${YELLOW}⚠️ $COMPOSE_VERSION (need >= 2.0)${NC}"
|
|
echo " Update to Docker Compose v2"
|
|
FAILED=1
|
|
fi
|
|
else
|
|
echo -e "${RED}❌ Not installed${NC}"
|
|
echo " Install Docker Compose v2 (included with Docker 20.10+)"
|
|
FAILED=1
|
|
fi
|
|
|
|
# 4. DDEV
|
|
echo -n "Checking DDEV installation... "
|
|
if command -v ddev >/dev/null 2>&1; then
|
|
DDEV_VERSION=$(ddev version 2>&1 | head -n1 | grep -oP 'v\K[0-9.]+' || echo "unknown")
|
|
echo -e "${GREEN}✅ v$DDEV_VERSION${NC}"
|
|
else
|
|
echo -e "${RED}❌ Not installed${NC}"
|
|
echo ""
|
|
echo "Install DDEV:"
|
|
echo " macOS: brew install ddev/ddev/ddev"
|
|
echo " Linux: curl -fsSL https://raw.githubusercontent.com/ddev/ddev/master/scripts/install_ddev.sh | bash"
|
|
echo " Windows: choco install ddev"
|
|
FAILED=1
|
|
fi
|
|
|
|
# 5. TYPO3 Extension (only check if in a directory, not fatal)
|
|
echo -n "Checking TYPO3 extension project... "
|
|
if [ -f "ext_emconf.php" ] || grep -q '"type".*"typo3-cms-extension"' composer.json 2>/dev/null; then
|
|
echo -e "${GREEN}✅ Detected${NC}"
|
|
else
|
|
echo -e "${YELLOW}⚠️ Not detected (optional check)${NC}"
|
|
echo " This check only matters if you're in an extension directory"
|
|
fi
|
|
|
|
echo ""
|
|
echo "━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━"
|
|
|
|
if [ $FAILED -eq 0 ]; then
|
|
echo -e "${GREEN}✅ All prerequisites validated successfully!${NC}"
|
|
echo ""
|
|
echo "You can now run DDEV commands:"
|
|
echo " ddev start"
|
|
echo " ddev install-all"
|
|
exit 0
|
|
else
|
|
echo -e "${RED}❌ Prerequisites validation failed${NC}"
|
|
echo ""
|
|
echo "Please resolve the issues above before proceeding."
|
|
echo "For detailed instructions, see:"
|
|
echo " ~/.claude/plugins/marketplaces/netresearch-claude-code-marketplace/skills/typo3-ddev/SKILL.md"
|
|
exit 1
|
|
fi
|