mirror of
				https://github.com/LOLBAS-Project/LOLBAS
				synced 2025-10-31 00:29:33 +01:00 
			
		
		
		
	* Adding GitHub Actions workflow test for duplicate filenames * Adding generic error message * Deduping fsutil.exe and teams.exe
		
			
				
	
	
		
			60 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
			
		
		
	
	
			60 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			YAML
		
	
	
	
	
	
| ---
 | |
| name: PUSH & PULL REQUEST - YAML Lint and Schema Validation Checks
 | |
| on: [push,pull_request]
 | |
| 
 | |
| jobs:
 | |
|   lintFiles:
 | |
|     if: github.event_name != 'pull_request' || github.event.pull_request.head.repo.full_name != github.event.pull_request.base.repo.full_name
 | |
|     runs-on: ubuntu-latest
 | |
|     steps:
 | |
|       - uses: actions/checkout@v3
 | |
|       - name: Check file extensions
 | |
|         run: |
 | |
|           files=$(find "$GITHUB_WORKSPACE/yml" -type f -not -name "*.yml");
 | |
|           if [[ $files ]]; then
 | |
|             echo "::error::Files with unexpected extension found, please ensure you use '.yml' (all lower case) for files in the yml/ folder.";
 | |
|             for i in $files; do echo "::error file=$i,line=1::Unexpected extension"; done
 | |
|             exit 1;
 | |
|           fi
 | |
|           unset files
 | |
|       - name: Check duplicate file names
 | |
|         run: |
 | |
|           files=$(find "$GITHUB_WORKSPACE/yml/OSBinaries" "$GITHUB_WORKSPACE/yml/OtherMSBinaries" -type f -printf '%h %f\n' -iname "*.yml" | sort -t ' ' -k 2,2 -f | uniq -i -f 1 --all-repeated=separate | tr ' ' '/')
 | |
|           if [[ $files ]]; then
 | |
|             echo "::error::Files with duplicate filenames detected, please make sure you don't create duplicate entries.";
 | |
|             for i in $files; do echo "::error file=$i,line=1::Duplicate filename"; done
 | |
|             exit 1;
 | |
|           fi
 | |
|           unset files
 | |
|       - name: yaml-lint
 | |
|         uses: ibiqlik/action-yamllint@v3
 | |
|         with:
 | |
|           no_warnings: true
 | |
|           file_or_dir: yml/**/*.yml
 | |
|           config_file: .github/.yamllint
 | |
|       - name: Validate Template Schema
 | |
|         uses: cketti/action-pykwalify@v0.3-temp-fix
 | |
|         with:
 | |
|           files: YML-Template.yml
 | |
|           schema: YML-Schema.yml
 | |
|       - name: Validate OSBinaries YAML Schema
 | |
|         uses: cketti/action-pykwalify@v0.3-temp-fix
 | |
|         with:
 | |
|           files: yml/OSBinaries/*.yml
 | |
|           schema: YML-Schema.yml
 | |
|       - name: Validate OSLibraries YAML Schema
 | |
|         uses: cketti/action-pykwalify@v0.3-temp-fix
 | |
|         with:
 | |
|           files: yml/OSLibraries/*.yml
 | |
|           schema: YML-Schema.yml
 | |
|       - name: Validate OSScripts YAML Schema
 | |
|         uses: cketti/action-pykwalify@v0.3-temp-fix
 | |
|         with:
 | |
|           files: yml/OSScripts/*.yml
 | |
|           schema: YML-Schema.yml
 | |
|       - name: Validate OtherMSBinaries YAML Schema
 | |
|         uses: cketti/action-pykwalify@v0.3-temp-fix
 | |
|         with:
 | |
|           files: yml/OtherMSBinaries/*.yml
 | |
|           schema: YML-Schema.yml
 |