mirror of
				https://github.com/community-scripts/ProxmoxVE.git
				synced 2025-11-04 10:22:50 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			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
 |