Add CI pipeline: ShellCheck + PowerShell lint
Lint Scripts / powershell-lint (push) Failing after 11m44s
Lint Scripts / shellcheck (push) Failing after 12m49s

Amp-Thread-ID: https://ampcode.com/threads/T-019e5bf0-feea-727d-9e3d-15c2ecf47812
Co-authored-by: Amp <amp@ampcode.com>
This commit is contained in:
2026-05-25 03:36:51 +02:00
parent a1a17e81a1
commit 29f8943d77
+61
View File
@@ -0,0 +1,61 @@
name: Lint Scripts
on:
push:
branches: [main]
pull_request:
jobs:
shellcheck:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: ShellCheck — all .sh files
run: |
echo "::group::Running ShellCheck"
failed=0
for f in *.sh; do
[ -f "$f" ] || continue
if ! shellcheck -S error "$f" 2>&1; then
failed=1
fi
done
echo "::endgroup::"
if [ "$failed" -eq 1 ]; then
echo "::error::ShellCheck found errors (severity: error)"
exit 1
fi
echo "All shell scripts passed ShellCheck (error severity)"
powershell-lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: PowerShell syntax check
run: |
echo "::group::PowerShell syntax check"
failed=0
for f in *.ps1; do
[ -f "$f" ] || continue
if ! pwsh -NoProfile -Command "
\$null = [System.Management.Automation.Language.Parser]::ParseFile(
(Resolve-Path '$f'),
[ref]\$null,
[ref]\$errors
)
if (\$errors.Count -gt 0) {
\$errors | ForEach-Object { Write-Error \$_.Message }
exit 1
}
" 2>&1; then
echo "FAIL: $f"
failed=1
fi
done
echo "::endgroup::"
if [ "$failed" -eq 1 ]; then
echo "::error::PowerShell syntax errors found"
exit 1
fi
echo "All PowerShell scripts passed syntax check"