diff options
| author | Archez <Archez@users.noreply.github.com> | 2025-04-01 17:09:44 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-04-01 17:09:44 -0400 |
| commit | e8389e0b2e116bac34cbaea1e1eda0280a77da1a (patch) | |
| tree | 031ca43b4eed7121fd619b4f7b2572ec13f5408d /run-clang-format.ps1 | |
| parent | 17b91ecc2da5e225f0a97f216c7b62154777fe29 (diff) | |
Add clang-format scripts and github runner action (#5270)
Diffstat (limited to 'run-clang-format.ps1')
| -rw-r--r-- | run-clang-format.ps1 | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/run-clang-format.ps1 b/run-clang-format.ps1 new file mode 100644 index 000000000..6aaf12ea4 --- /dev/null +++ b/run-clang-format.ps1 @@ -0,0 +1,48 @@ +Using Namespace System +$url = "https://github.com/llvm/llvm-project/releases/download/llvmorg-14.0.6/LLVM-14.0.6-win64.exe" +$llvmInstallerPath = ".\LLVM-14.0.6-win64.exe" +$clangFormatFilePath = ".\clang-format.exe" +$requiredVersion = "clang-format version 14.0.6" +$currentVersion = "" + +function Test-7ZipInstalled { + $sevenZipPath = "C:\Program Files\7-Zip\7z.exe" + return Test-Path $sevenZipPath -PathType Leaf +} + +if (Test-Path $clangFormatFilePath) { + $currentVersion = & $clangFormatFilePath --version + if (-not ($currentVersion -eq $requiredVersion)) { + # Delete the existing file if the version is incorrect + Remove-Item $clangFormatFilePath -Force + } +} + +if (-not (Test-Path $clangFormatFilePath) -or ($currentVersion -ne $requiredVersion)) { + if (-not (Test-7ZipInstalled)) { + Write-Host "7-Zip is not installed. Please install 7-Zip and run the script again." + exit + } + + $wc = New-Object net.webclient + $wc.Downloadfile($url, $llvmInstallerPath) + + $sevenZipPath = "C:\Program Files\7-Zip\7z.exe" + $specificFileInArchive = "bin\clang-format.exe" + & "$sevenZipPath" e $llvmInstallerPath $specificFileInArchive + + Remove-Item $llvmInstallerPath -Force +} + +$basePath = (Resolve-Path .).Path +$files = Get-ChildItem -Path $basePath\soh -Recurse -File ` + | Where-Object { ($_.Extension -eq '.c' -or $_.Extension -eq '.cpp' -or ` + ($_.Extension -eq '.h' -and ` + (-not ($_.FullName -like "*\soh\src\*" -or $_.FullName -like "*\soh\include\*")))) -and ` + (-not ($_.FullName -like "*\soh\assets\*")) } + +foreach ($file in $files) { + $relativePath = $file.FullName.Substring($basePath.Length + 1) + Write-Host "Formatting $relativePath" + .\clang-format.exe -i $file.FullName +} |
