name: Lint on: push: branches: [main] pull_request: branches: [main] jobs: lint-php: name: PHP Syntax Check runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Install PHP run: | apt-get update -qq && apt-get install -y -qq php-cli > /dev/null 2>&1 - name: PHP Lint run: | errors=0 while IFS= read -r file; do if ! php -l "$file" > /dev/null 2>&1; then echo "❌ Syntax error in $file" php -l "$file" errors=1 fi done < <(find . -name "*.php" -not -path "./vendor/*") if [ "$errors" -eq 1 ]; then echo "::error::PHP lint check failed" exit 1 fi echo "✅ All PHP files pass syntax check" lint-css: name: CSS Lint (stylelint) runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Install Node.js & stylelint run: | apt-get update -qq && apt-get install -y -qq npm nodejs > /dev/null 2>&1 npm install -g stylelint stylelint-config-standard stylelint-prettier > /dev/null 2>&1 - name: CSS Lint run: | npx stylelint "**/*.css" --config .stylelintrc.json --allow-empty-input echo "✅ All CSS files pass lint" lint-html: name: HTML Lint (htmlhint) runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - name: Install Node.js & htmlhint run: | apt-get update -qq && apt-get install -y -qq npm nodejs > /dev/null 2>&1 npm install -g htmlhint > /dev/null 2>&1 - name: HTML Lint run: | npx htmlhint "**/*.html" --config .htmlhintrc echo "✅ All HTML files pass lint"