diff --git a/scripts/check-format.ps1 b/scripts/check-format.ps1 new file mode 100644 index 00000000..02cfba55 --- /dev/null +++ b/scripts/check-format.ps1 @@ -0,0 +1,35 @@ +#!powershell + +$ErrorActionPreference = "Stop" + +$repositoryRoot = Split-Path -Parent $PSScriptRoot +$sourceDirectories = @( + (Join-Path $repositoryRoot "src") + (Join-Path $repositoryRoot "test") +) + +$clangFormat = if ($env:CLANG_FORMAT_BIN) { + $env:CLANG_FORMAT_BIN +} +else { + "clang-format" +} + +$files = @( + Get-ChildItem -Path $sourceDirectories -Recurse -File | + Where-Object { $_.Extension -in ".h", ".cpp" } +) + +# Stay comfortably below Windows' native process command-line limit. +$batchSize = 100 + +for ($offset = 0; $offset -lt $files.Count; $offset += $batchSize) { + $lastIndex = [Math]::Min($offset + $batchSize - 1, $files.Count - 1) + $batch = $files[$offset..$lastIndex].FullName + + & $clangFormat -Werror -ferror-limit=1 --dry-run $batch + + if ($LASTEXITCODE -ne 0) { + exit $LASTEXITCODE + } +} \ No newline at end of file diff --git a/scripts/reformat-all.ps1 b/scripts/reformat-all.ps1 new file mode 100644 index 00000000..f30cb896 --- /dev/null +++ b/scripts/reformat-all.ps1 @@ -0,0 +1,35 @@ +#!powershell + +$ErrorActionPreference = "Stop" + +$repositoryRoot = Split-Path -Parent $PSScriptRoot +$sourceDirectories = @( + (Join-Path $repositoryRoot "src") + (Join-Path $repositoryRoot "test") +) + +$clangFormat = if ($env:CLANG_FORMAT_BIN) { + $env:CLANG_FORMAT_BIN +} +else { + "clang-format" +} + +$files = @( + Get-ChildItem -Path $sourceDirectories -Recurse -File | + Where-Object { $_.Extension -in ".h", ".cpp" } +) + +# Stay comfortably below Windows' native process command-line limit. +$batchSize = 100 + +for ($offset = 0; $offset -lt $files.Count; $offset += $batchSize) { + $lastIndex = [Math]::Min($offset + $batchSize - 1, $files.Count - 1) + $batch = $files[$offset..$lastIndex].FullName + + & $clangFormat --verbose -i $batch + + if ($LASTEXITCODE -ne 0) { + exit $LASTEXITCODE + } +} \ No newline at end of file