summaryrefslogtreecommitdiff
path: root/run-clang-format.ps1
diff options
context:
space:
mode:
authorArchez <Archez@users.noreply.github.com>2025-04-01 17:09:44 -0400
committerGitHub <noreply@github.com>2025-04-01 17:09:44 -0400
commite8389e0b2e116bac34cbaea1e1eda0280a77da1a (patch)
tree031ca43b4eed7121fd619b4f7b2572ec13f5408d /run-clang-format.ps1
parent17b91ecc2da5e225f0a97f216c7b62154777fe29 (diff)
Add clang-format scripts and github runner action (#5270)
Diffstat (limited to 'run-clang-format.ps1')
-rw-r--r--run-clang-format.ps148
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
+}