pipeline { agent any stages { stage('Check Indentation') { steps { script { // Check for spaces or mixed indentation sh ''' FILETYPES="css|json|js|java|py|ps1|cs|cmd|bat|htm|html|cpp|c|h|hpp" # Convert FILE_EXTENSIONS to --include pattern FILES=$(find . -regextype awk -regex '.*($FILETYPES)' -type f) # Initialize the PROBLEMS variable PROBLEMS="" echo "$FILES" | while IFS= read -r file; do # Check for lines with spaces GREP_RESULT=$(grep -nrP '^[ ]+' "$file" | sed 's/\([^:]*\):\([^:]*\):\([ ]*\).*/File: \1, Line: \2, Found: \3/') if [ -n "$GREP_RESULT" ]; then PROBLEMS="$PROBLEMS$GREP_RESULT"$'\n' # Append the result to PROBLEMS fi # Check for lines with mixed tabs and spaces GREP_RESULT=$(grep -nrP '^\t+ +' "$file" | sed 's/\([^:]*\):\([^:]*\):\([ ]*\).*/File: \1, Line: \2, Found: \3/') if [ -n "$GREP_RESULT" ]; then PROBLEMS="$PROBLEMS$GREP_RESULT"$'\n' # Append the result to PROBLEMS fi done # Check if there were any problems if [ -n "$PROBLEMS" ]; then echo "Indentation issues detected. Please fix the above lines." echo "$PROBLEMS" exit 1 else echo "No indentation issues detected." exit 0 fi ''' } } } stage('Validate CSS Syntax') { steps { script { sh 'stylelint ./**/*.css' } } } } }