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;
|
gap: 0;
|
||||||
z-index: 95;
|
z-index: 95;
|
||||||
border-bottom: 1px solid var(--warm);
|
border-bottom: 1px solid var(--warm);
|
||||||
animation: slideDown 0.3s ease;
|
animation: slide-down 0.3s ease;
|
||||||
}
|
}
|
||||||
|
|
||||||
nav.mobile-open .nav-links a {
|
nav.mobile-open .nav-links a {
|
||||||
@@ -1239,11 +1239,12 @@ footer {
|
|||||||
background: transparent;
|
background: transparent;
|
||||||
}
|
}
|
||||||
|
|
||||||
@keyframes slideDown {
|
@keyframes slide-down {
|
||||||
from {
|
from {
|
||||||
opacity: 0;
|
opacity: 0;
|
||||||
transform: translateY(-10px);
|
transform: translateY(-10px);
|
||||||
}
|
}
|
||||||
|
|
||||||
to {
|
to {
|
||||||
opacity: 1;
|
opacity: 1;
|
||||||
transform: translateY(0);
|
transform: translateY(0);
|
||||||
|
|||||||
@@ -737,7 +737,7 @@ if ($_SERVER['REQUEST_METHOD'] === 'POST') {
|
|||||||
</div>
|
</div>
|
||||||
<?php else: ?>
|
<?php else: ?>
|
||||||
<?php if (!empty($formErrors)): ?>
|
<?php if (!empty($formErrors)): ?>
|
||||||
<div id="form-result" class="form-errors">
|
<div id="form-errors" class="form-errors">
|
||||||
<ul>
|
<ul>
|
||||||
<?php foreach ($formErrors as $error): ?>
|
<?php foreach ($formErrors as $error): ?>
|
||||||
<li><?= escapeContactValue($error) ?></li>
|
<li><?= escapeContactValue($error) ?></li>
|
||||||
|
|||||||
Reference in New Issue
Block a user