Skip to content

Commit 492dbe8

Browse files
ci(validation): speed up validation, only print logs
1 parent 1749e79 commit 492dbe8

2 files changed

Lines changed: 91 additions & 19 deletions

File tree

.github/workflows/regex.yml

Lines changed: 3 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -26,26 +26,10 @@ jobs:
2626
sudo apt-get update
2727
sudo apt-get install -y powershell
2828
29-
- name: Validate All Patterns
30-
run: |
31-
failed=0
32-
for file in regex_patterns/*.yml regex_patterns/*.yaml; do
33-
if [ -f "$file" ]; then
34-
echo "Validating: $file"
35-
if ! pwsh scripts/validatePattern.ps1 -YamlFilePath "$file"; then
36-
failed=$((failed + 1))
37-
fi
38-
fi
39-
done
40-
41-
if [ $failed -gt 0 ]; then
42-
echo "❌ $failed pattern(s) failed validation"
43-
exit 1
44-
else
45-
echo "✅ All patterns validated successfully"
46-
fi
29+
- name: validate
30+
run: pwsh scripts/validateAllPatterns.ps1
4731

48-
- name: Run Unit Tests
32+
- name: test
4933
run: |
5034
echo "TODO: Implement unit tests for all patterns"
5135
# TODO: Add test runner command here

scripts/validateAllPatterns.ps1

Lines changed: 88 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,88 @@
1+
param()
2+
3+
function Write-Log {
4+
param(
5+
[Parameter(Mandatory=$true)]
6+
[string]$Level,
7+
[Parameter(Mandatory=$true)]
8+
[string]$Message
9+
)
10+
11+
if ($Level -eq "ERROR") {
12+
Write-Host "ERROR: $Message" -ForegroundColor Red
13+
}
14+
elseif ($Level -eq "SUCCESS") {
15+
Write-Host "$Message" -ForegroundColor Green
16+
}
17+
elseif ($Level -eq "INFO") {
18+
Write-Host "$Message"
19+
}
20+
}
21+
22+
# Get all pattern files
23+
$patternFiles = @()
24+
$patternFiles += Get-ChildItem -Path "regex_patterns" -Filter "*.yml" -File
25+
$patternFiles += Get-ChildItem -Path "regex_patterns" -Filter "*.yaml" -File
26+
27+
if ($patternFiles.Count -eq 0) {
28+
Write-Log -Level "ERROR" -Message "No pattern files found in regex_patterns/"
29+
exit 1
30+
}
31+
32+
Write-Log -Level "INFO" -Message "Found $($patternFiles.Count) pattern files to validate"
33+
34+
# Validate patterns sequentially
35+
$failedPatterns = @()
36+
$completed = 0
37+
$totalFiles = $patternFiles.Count
38+
$lastPercentLogged = 0
39+
40+
foreach ($file in $patternFiles) {
41+
try {
42+
# Read YAML content
43+
$yamlContent = Get-Content -Path $file.FullName -Raw
44+
45+
# Extract pattern field
46+
$patternMatch = [regex]::Match($yamlContent, 'pattern:\s*(.+)')
47+
$pattern = $patternMatch.Groups[1].Value.Trim()
48+
49+
# Validate the pattern
50+
$regex = New-Object System.Text.RegularExpressions.Regex($pattern)
51+
52+
# Success - no need to log
53+
}
54+
catch {
55+
$failedPatterns += @{
56+
File = $file.FullName
57+
Error = $_.ToString()
58+
Pattern = $pattern
59+
}
60+
}
61+
62+
$completed++
63+
64+
# Log progress every 10%
65+
$percentComplete = [math]::Floor(($completed / $totalFiles) * 10) * 10
66+
if ($percentComplete -gt $lastPercentLogged) {
67+
Write-Log -Level "INFO" -Message "$percentComplete% complete ($completed/$totalFiles files)"
68+
$lastPercentLogged = $percentComplete
69+
}
70+
}
71+
72+
# Log errors
73+
foreach ($failure in $failedPatterns) {
74+
Write-Log -Level "ERROR" -Message "$($failure.File): $($failure.Error)"
75+
if ($Verbose) {
76+
Write-Log -Level "ERROR" -Message "Pattern was: $($failure.Pattern)"
77+
}
78+
}
79+
80+
# Summary
81+
if ($failedPatterns.Count -gt 0) {
82+
Write-Log -Level "ERROR" -Message "$($failedPatterns.Count) pattern(s) failed validation"
83+
exit 1
84+
}
85+
else {
86+
Write-Log -Level "SUCCESS" -Message "All $($patternFiles.Count) patterns validated successfully"
87+
exit 0
88+
}

0 commit comments

Comments
 (0)