# WordPress AI SEO Plugin Makefile
# ================================

PLUGIN_SLUG := pn-ai-seo-geo
VERSION := $(shell grep "Version:" wp-ai-seo.php | sed 's/.*Version: *\([0-9.]*\).*/\1/')
RELEASE_DIR := release
RELEASES_DIR := releases
ZIP_FILE := $(PLUGIN_SLUG)-$(VERSION).zip

.PHONY: help clean release zip install dev-install release-update prepare-metadata

# Default target
help:
	@echo -e "\033[36mWordPress AI SEO Plugin - Available Commands:\033[0m"
	@echo ""
	@echo "  make clean        - Remove release directory and zip files"
	@echo "  make install      - Install production dependencies"
	@echo "  make dev-install  - Install development dependencies"
	@echo ""
	@echo -e "\033[33mAuto-Update System:\033[0m"
	@echo "  make release-update VERSION=x.x.x  - Create auto-update release with metadata"
	@echo "  make prepare-metadata VERSION=x.x.x - Extract metadata from release ZIP"
	@echo ""

# Clean release artifacts
clean:
	@echo -e "\033[36mCleaning release artifacts...\033[0m"
	@rm -rf $(RELEASE_DIR)
	@rm -rf $(RELEASES_DIR)
	@rm -f $(PLUGIN_SLUG)-*.zip
	@echo -e "\033[32m✓ Clean complete\033[0m"

# Install production dependencies
install:
	@echo -e "\033[36mInstalling production dependencies...\033[0m"
	@composer install --no-dev --optimize-autoloader
	@echo -e "\033[32m✓ Production dependencies installed\033[0m"

# Install development dependencies
dev-install:
	@echo -e "\033[36mInstalling development dependencies...\033[0m"
	@composer install
	@echo -e "\033[32m✓ Development dependencies installed\033[0m"

# Create release for auto-update system with specific version
release-update:
ifndef VERSION
	$(error VERSION is not set. Usage: make release-update VERSION=3.0.0)
endif
	@echo -e "\033[36mCreating auto-update release for version $(VERSION)...\033[0m"
	@mkdir -p $(RELEASES_DIR)
	@mkdir -p $(RELEASE_DIR)/$(PLUGIN_SLUG)
	
	@echo -e "\033[36mCopying plugin files...\033[0m"
	@cp -r src $(RELEASE_DIR)/$(PLUGIN_SLUG)/
	@cp -r assets $(RELEASE_DIR)/$(PLUGIN_SLUG)/
	@cp -r languages $(RELEASE_DIR)/$(PLUGIN_SLUG)/
	@cp wp-ai-seo.php $(RELEASE_DIR)/$(PLUGIN_SLUG)/
	@cp README.md $(RELEASE_DIR)/$(PLUGIN_SLUG)/
	@cp CHANGELOG.md $(RELEASE_DIR)/$(PLUGIN_SLUG)/
	@cp composer.json $(RELEASE_DIR)/$(PLUGIN_SLUG)/
	
	@echo -e "\033[36mInstalling production dependencies...\033[0m"
	@cd $(RELEASE_DIR)/$(PLUGIN_SLUG) && composer install --no-dev --optimize-autoloader --quiet
	
	@echo -e "\033[36mCleaning up development files...\033[0m"
	@find $(RELEASE_DIR)/$(PLUGIN_SLUG) -name ".git*" -exec rm -rf {} + 2>/dev/null || true
	@find $(RELEASE_DIR)/$(PLUGIN_SLUG) -name ".DS_Store" -exec rm -f {} + 2>/dev/null || true
	@rm -rf $(RELEASE_DIR)/$(PLUGIN_SLUG)/tests 2>/dev/null || true
	@rm -rf $(RELEASE_DIR)/$(PLUGIN_SLUG)/docs 2>/dev/null || true
	@rm -rf $(RELEASE_DIR)/$(PLUGIN_SLUG)/stories 2>/dev/null || true
	@rm -f $(RELEASE_DIR)/$(PLUGIN_SLUG)/Makefile 2>/dev/null || true
	@rm -f $(RELEASE_DIR)/$(PLUGIN_SLUG)/composer.lock 2>/dev/null || true
	@rm -f $(RELEASE_DIR)/$(PLUGIN_SLUG)/RELEASE_CHECKLIST.md 2>/dev/null || true
	
	@echo -e "\033[36mCreating zip archive $(VERSION).zip...\033[0m"
	@cd $(RELEASE_DIR) && zip -r ../$(RELEASES_DIR)/$(VERSION).zip $(PLUGIN_SLUG) -q
	
	@echo -e "\033[32m✓ Auto-update release created: $(RELEASES_DIR)/$(VERSION).zip\033[0m"
	@echo -e "\033[36mPackage size: $$(du -h $(RELEASES_DIR)/$(VERSION).zip | cut -f1)\033[0m"
	@echo ""
	@echo -e "\033[33m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\033[0m"
	@echo -e "\033[33mNext Steps:\033[0m"
	@echo -e "\033[33m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\033[0m"
	@echo ""
	@echo -e "1. Upload to license server:"
	@echo -e "   \033[36mscp $(RELEASES_DIR)/$(VERSION).zip user@server:/var/www/api-seogeo/storage/releases/wp-ai-seo/\033[0m"
	@echo ""
	@echo -e "2. Set correct permissions on server:"
	@echo -e "   \033[36mssh user@server\033[0m"
	@echo -e "   \033[36mcd /var/www/api-seogeo/storage/releases/wp-ai-seo/\033[0m"
	@echo -e "   \033[36mchmod 640 $(VERSION).zip\033[0m"
	@echo -e "   \033[36mchown www-data:www-data $(VERSION).zip\033[0m"
	@echo ""
	@echo -e "3. Test update on WordPress site:"
	@echo -e "   - Go to Dashboard → Updates"
	@echo -e "   - Click 'Check Again'"
	@echo -e "   - Verify update appears"
	@echo ""
	@echo -e "\033[33m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\033[0m"
	
	@rm -rf $(RELEASE_DIR)

# Extract and prepare metadata from release ZIP
prepare-metadata:
ifndef VERSION
	$(error VERSION is not set. Usage: make prepare-metadata VERSION=3.0.0)
endif
	@echo -e "\033[36mExtracting metadata from release...\033[0m"
	@mkdir -p $(RELEASES_DIR)/temp
	@unzip -q $(RELEASES_DIR)/$(VERSION).zip -d $(RELEASES_DIR)/temp
	
	@echo -e "\033[36mParsing plugin header and CHANGELOG.md...\033[0m"
	@php scripts/prepare-metadata.php $(VERSION) $(RELEASES_DIR) $(PLUGIN_SLUG)
	
	@rm -rf $(RELEASES_DIR)/temp
	@echo -e "\033[32m✓ Metadata prepared: $(RELEASES_DIR)/metadata-$(VERSION).json\033[0m"