# ══════════════════════════════════════════════════════════════════
#  Nashiri Theme — Makefile
#  الاستخدام: make <هدف>
#  البيئة المُوصى بها: WSL Ubuntu-22.04
# ══════════════════════════════════════════════════════════════════

.PHONY: help test cs cs-fix stan check sync install clean css-build css-check coverage lint pot release free ads-sync

PHP     := php
PHPUNIT := vendor/bin/phpunit
PHPCS   := vendor/bin/phpcs
PHPCBF  := vendor/bin/phpcbf
PHPSTAN := vendor/bin/phpstan

## help: اعرض هذه القائمة
help:
	@grep -E '^## ' Makefile | sed 's/## //' | column -t -s':'

## install: تثبيت dependencies
install:
	composer install --no-interaction --no-progress

## test: تشغيل اختبارات PHPUnit
test:
	$(PHP) $(PHPUNIT) --testdox

## test-fast: تشغيل الاختبارات بدون testdox (أسرع)
test-fast:
	$(PHP) $(PHPUNIT)

## cs: فحص معايير الكود (phpcs)
cs:
	$(PHP) $(PHPCS) --warning-severity=0

## cs-fix: إصلاح مخالفات الكود تلقائياً (phpcbf)
cs-fix:
	$(PHP) $(PHPCBF)

## stan: التحليل الثابت (phpstan level 5)
stan:
	$(PHP) $(PHPSTAN) analyse --no-progress

## stan-baseline: تحديث الـ baseline
stan-baseline:
	$(PHP) $(PHPSTAN) analyse --no-progress --generate-baseline phpstan-baseline.neon

## css-build: توليد main.css من core/single/widgets (لا تعدّله يدوياً)
css-build:
	node tools/build-main-css.mjs

## css-check: تأكد أن main.css مطابق لمصدره
css-check:
	node tools/build-main-css.mjs --check

## lint: ESLint لسكربتات الواجهة + Stylelint للأنماط (يحتاج node و npx)
lint:
	npm run lint

## coverage: تقرير التغطية (يتطلب pcov أو xdebug) — يُكتب في coverage/html
coverage:
	mkdir -p coverage
	XDEBUG_MODE=coverage $(PHP) $(PHPUNIT) --coverage-text --coverage-html=coverage/html

## pot: توليد languages/nashiri.pot (يتطلب wp-cli)
pot:
	wp i18n make-pot . languages/nashiri.pot --slug=nashiri --domain=nashiri --exclude=vendor,node_modules,tests,scratch,docs,e2e,assets/build

## release: حزمة النسخة الكاملة (dist/nashiri-X.zip) — تتطلب npm run build قبلها
release:
	php scripts/build-release.php --edition=pro

## ads-sync: مزامنة إضافة إعلانات المعمار (آخر إيداع) إلى النسخة المدفوعة — modules/elmimar-ads
ads-sync:
	php scripts/sync-elmimar-ads.php

## free: حزمة النسخة المجانية (بلا الإعلانات) — dist/nashiri-free-X.zip
free:
	php scripts/build-release.php --edition=free

## check: تشغيل جميع الفحوصات (cs + stan + test)
check: cs stan test

## sync: مزامنة الملفات من Windows → WSL native (للتطوير المزدوج)
sync:
	rsync -av --delete \
		--exclude='vendor/' \
		--exclude='.git/' \
		--exclude='nashiri.zip' \
		/mnt/a/Themes/nashiri/ \
		/home/dev/code/projects/nashiri/code/

## clean: تنظيف ملفات الـ cache
clean:
	rm -rf .phpunit.cache/ var/ .cache/ e2e-report/ test-results/

## e2e: تشغيل اختبارات Playwright E2E (يتطلب موقع nashiri يعمل)
e2e:
	TEST_URL=http://bd.test npx playwright test

## e2e-headed: تشغيل Playwright بواجهة مرئية (للتطوير)
e2e-headed:
	TEST_URL=http://bd.test npx playwright test --headed

## e2e-report: فتح تقرير Playwright
e2e-report:
	npx playwright show-report e2e-report

## e2e-ui: فتح Playwright UI للتطوير التفاعلي
e2e-ui:
	TEST_URL=http://bd.test npx playwright test --ui

## check-all: كل الفحوصات + E2E
check-all: check e2e

## build: بناء حزمة الإصدار النهائية
build:
	bash tools/build.sh

## build-version: بناء إصدار بنسخة محددة (مثال: make build-version v=2.0.1)
build-version:
	bash tools/build.sh $(v)
