mirror of
https://github.com/community-scripts/ProxmoxVE
synced 2025-01-10 19:05:09 +00:00
0f2a1fdb45
Signed-off-by: CanbiZ <47820557+MickLesk@users.noreply.github.com>
55 lines
1.8 KiB
YAML
55 lines
1.8 KiB
YAML
name: Check Shell Scripts
|
|
|
|
on:
|
|
pull_request:
|
|
paths:
|
|
- '**/*.sh' # Führt den Check nur für Shell-Skripte aus
|
|
|
|
jobs:
|
|
check-scripts:
|
|
runs-on: ubuntu-latest
|
|
|
|
steps:
|
|
- name: Checkout Code
|
|
uses: actions/checkout@v3
|
|
|
|
- name: Check `source` Line in Scripts
|
|
shell: bash
|
|
run: |
|
|
set -e
|
|
ERROR_COUNT=0
|
|
FILES=$(find . -name "*.sh")
|
|
|
|
for FILE in $FILES; do
|
|
# Check for exact match of the source line in line 2
|
|
if [[ $(sed -n '2p' "$FILE") =~ ^source[[:space:]]+<(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func) ]]; then
|
|
echo "Check passed for: $FILE"
|
|
else
|
|
echo "Error in $FILE: Line 2 must be exactly 'source <(curl -s https://raw.githubusercontent.com/community-scripts/ProxmoxVE/main/misc/build.func)' if a source line is used."
|
|
ERROR_COUNT=$((ERROR_COUNT + 1))
|
|
fi
|
|
|
|
# Check for shebang line at the top
|
|
if [[ $(head -n 1 "$FILE") != "#!/usr/bin/env bash" ]]; then
|
|
echo "Error in $FILE: The first line must be '#!/usr/bin/env bash'."
|
|
ERROR_COUNT=$((ERROR_COUNT + 1))
|
|
fi
|
|
|
|
# Check for executable permissions
|
|
if [[ ! -x "$FILE" ]]; then
|
|
echo "Warning in $FILE: This script is not executable. Consider running 'chmod +x $FILE'."
|
|
fi
|
|
|
|
# Check for empty lines at the beginning of the script
|
|
if [[ $(head -n 10 "$FILE" | grep -c '^$') -gt 0 ]]; then
|
|
echo "Warning in $FILE: There are empty lines at the beginning of the script. Consider removing them."
|
|
fi
|
|
done
|
|
|
|
if [[ "$ERROR_COUNT" -gt 0 ]]; then
|
|
echo "$ERROR_COUNT script(s) failed validation."
|
|
exit 1
|
|
else
|
|
echo "All scripts passed."
|
|
fi
|