iptv-stream-web/Makefile

205 lines
6.2 KiB
Makefile

# Dodgers IPTV - Development Makefile
.PHONY: help install test test-unit test-coverage lint clean setup db migrate
# Default target
help:
@echo "Dodgers IPTV Development Commands:"
@echo ""
@echo "Setup & Installation:"
@echo " make install - Install PHP dependencies via Composer"
@echo " make setup - Complete setup (install + migrate)"
@echo ""
@echo "Database:"
@echo " make db - Run database migrations"
@echo " make migrate - Alias for db"
@echo ""
@echo "Testing:"
@echo " make test - Run all tests"
@echo " make test-unit - Run unit tests only"
@echo " make test-coverage - Run tests with coverage report"
@echo ""
@echo "Code Quality:"
@echo " make lint - Run PHPStan static analysis"
@echo " make check - Run both tests and linting"
@echo ""
@echo "Maintenance:"
@echo " make clean - Clean up test artifacts and logs"
@echo " make docs - Generate API documentation (placeholder)"
@echo ""
@echo "Examples:"
@echo " make install && make test # Install deps and run tests"
@echo " make setup && make check # Full setup and quality check"
# Installation
install:
@echo "Installing PHP dependencies..."
composer install --no-interaction --optimize-autoloader
@echo "Installation complete!"
setup: install db
@echo "Setup complete!"
@echo "Run 'make test' to verify everything works"
# Database operations
db: migrate
migrate:
@echo "Running database migrations..."
@php -r "
require_once 'bootstrap.php';
require_once 'includes/Database.php';
try {
\$db = Database::getInstance();
\$sql = file_get_contents('migrations/001_create_tables.sql');
\$db->getConnection()->exec(\$sql);
echo 'Database migration completed successfully!';
} catch (Exception \$e) {
echo 'Migration failed: ' . \$e->getMessage();
exit(1);
}
"
# Testing
test:
@echo "Running PHPUnit tests..."
vendor/bin/phpunit --configuration=phpunit.xml
test-unit:
@echo "Running unit tests only..."
vendor/bin/phpunit --configuration=phpunit.xml --testsuite="Unit Tests"
test-integration:
@echo "Running integration tests only..."
vendor/bin/phpunit --configuration=phpunit.xml --testsuite="Integration Tests"
test-coverage:
@echo "Running tests with coverage..."
vendor/bin/phpunit --configuration=phpunit.xml --coverage-html=tests/coverage
@echo "Coverage report generated in tests/coverage/"
test-watch:
@echo "Watching for changes and running tests..."
@while true; do \
inotifywait -qre modify . --exclude="vendor/|\.git/|tests/coverage/"; \
make test-unit; \
done
# PFStan configuration
# Code quality
lint:
@echo "Running PHPStan static analysis..."
vendor/bin/phpstan analyse --configuration=phpstan.neon --level=8 src/
phpstan-setup:
@echo "Setting up PHPStan configuration..."
cat > phpstan.neon << EOF
parameters:
level: 8
paths:
- models
- controllers
- services
- utils
- includes
excludes_analyse:
- vendor/
- tests/
- assets/
- static/
- migrations/
ignoreErrors:
- '#Function config not found#' # For Config::get calls
check: test lint
# Development helpers
docker-build:
@echo "Building Docker container..."
docker build -t dodgers-iptv .
docker-run:
@echo "Running Docker container..."
docker run -p 8000:80 -v $(PWD):/var/www/html dodgers-iptv
server-start:
@echo "Starting PHP development server..."
php -S localhost:8000 -t .
# Maintenance
clean:
@echo "Cleaning up artifacts..."
rm -rf tests/coverage/
rm -rf tests/results/
rm -rf logs/
rm -f phpunit.xml.bak
find . -name "*.log" -not -name ".git*" -deleteW
find . -name "*~" -delete
find . -name "*.tmp" -delete
deep-clean: clean
@echo "Deep cleaning (removes vendor and composer.lock)..."
rm -rf vendor/
rm -rf node_modules/
rm -f composer.lock
rm -f package-lock.json
# Documentation (placeholder for future API docs)
docs:
@echo "Generating API documentation..."
@echo "API Documentation generation not yet implemented."
@echo "Consider using OpenAPI/Swagger for API documentation."
# Security audit
audit:
@echo "Running security audit..."
vendor/bin/security-checker security:check composer.lock
@echo "Consider running 'composer audit' for official vulnerability scan"
# Performance profiling
profile:
@echo "Performance profiling..."
@echo "Install Blackfire or Xdebug for PHP profiling"
@echo "Example: php -d xdebug.profiler_enable=On index.php"
@echo "Then analyze cachegrind files with tools like QCacheGrind"
# Deployment preparation
build:
@echo "Building for production..."
@echo "Optimizing autoloader..."
composer install --no-dev --optimize-autoloader
@echo "Clearing caches..."
rm -rf tests/coverage/
@echo "Setting correct permissions..."
find . -type f -name "*.php" -exec chmod 644 {} \;
find . -type d -exec chmod 755 {} \;
@echo "Build complete. Ready for deployment!"
# Utility commands
status:
@echo "=== Project Status ==="
@echo "PHP Version: $$(php --version | head -1)"
@echo "Composer: $$(composer --version)"
@if [ -f vendor/autoload.php ]; then echo "✓ Dependencies installed"; else echo "✗ Dependencies missing"; fi
@echo "Environment: $$(php -r "echo getenv('APP_ENV') ?: 'not set';")"
@if [ -f logs/app.log ]; then echo "Log file size: $$(du -h logs/app.log | cut -f1)"; else echo "No log file"; fi
# PHPDoc generation
phpdoc:
@echo "Generating PHPDoc..."
vendor/bin/phpdoc run --directory=models,controllers,services,utils,includes --target=docs/phpdoc
# Version management
version:
@echo "Current version info:"
@php -r "
\$composer = json_decode(file_get_contents('composer.json'), true);
echo 'Package: ' . (\$composer['name'] ?? 'unknown') . PHP_EOL;
echo 'Version: ' . (\$composer['version'] ?? 'dev') . PHP_EOL;
echo 'PHP: ' . PHP_VERSION . PHP_EOL;
echo 'OS: ' . PHP_OS . PHP_EOL;
"
.PHONY: help install setup db migrate test test-unit test-coverage lint clean deep-clean docs audit profile build status phpdoc version docker-build docker-run server-start test-integration test-watch phpstan-setup check