Fix #44: CI Pipeline mit PHP/CSS/HTML Linting #45
64
.gitea/workflows/lint.yml
Normal file
64
.gitea/workflows/lint.yml
Normal file
@@ -0,0 +1,64 @@
|
||||
name: Lint
|
||||
|
||||
on:
|
||||
push:
|
||||
pull_request:
|
||||
|
||||
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"
|
||||
@@ -1216,7 +1216,7 @@ footer {
|
||||
gap: 0;
|
||||
z-index: 95;
|
||||
border-bottom: 1px solid var(--warm);
|
||||
animation: slideDown 0.3s ease;
|
||||
animation: slide-down 0.3s ease;
|
||||
}
|
||||
|
||||
nav.mobile-open .nav-links a {
|
||||
@@ -1239,11 +1239,12 @@ footer {
|
||||
background: transparent;
|
||||
}
|
||||
|
||||
@keyframes slideDown {
|
||||
@keyframes slide-down {
|
||||
from {
|
||||
opacity: 0;
|
||||
transform: translateY(-10px);
|
||||
}
|
||||
|
||||
to {
|
||||
opacity: 1;
|
||||
transform: translateY(0);
|
||||
|
||||
@@ -737,7 +737,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
||||
</div>
|
||||
<?php else: ?>
|
||||
<?php if (!empty($formErrors)): ?>
|
||||
<div id="form-result" class="form-errors">
|
||||
<div id="form-errors" class="form-errors">
|
||||
<ul>
|
||||
<?php foreach ($formErrors as $error): ?>
|
||||
<li><?= escapeContactValue($error) ?></li>
|
||||
|
||||
Reference in New Issue
Block a user