mirror of
https://github.com/HarbourMasters/2ship2harkinian.git
synced 2024-11-27 00:00:32 +00:00
clang format (#447)
* add linux clang format script * first shot at powershell * whoops * webrequest is slow, try webclient * just get the one file * simplify and maybe make it work? * whoops again * try a different suggestion * why is it always windows * again * try again * bit of path stuff * chmod +x * add action to check * fix workflow name
This commit is contained in:
parent
a8ffb5bcb6
commit
0a2d89924b
20
.github/workflows/clang-format.yml
vendored
Normal file
20
.github/workflows/clang-format.yml
vendored
Normal file
@ -0,0 +1,20 @@
|
||||
name: clang-format
|
||||
on: [pull_request]
|
||||
concurrency:
|
||||
group: ${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
jobs:
|
||||
clang-format:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
fetch-depth: 2
|
||||
- name: Install clang-format
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y clang-format-14
|
||||
- name: Run clang-format
|
||||
run: |
|
||||
./run-clang-format.sh
|
||||
git diff --exit-code
|
47
run-clang-format.ps1
Normal file
47
run-clang-format.ps1
Normal file
@ -0,0 +1,47 @@
|
||||
$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\mm -Recurse -File `
|
||||
| Where-Object { ($_.Extension -eq '.c' -or $_.Extension -eq '.cpp' -or `
|
||||
($_.Extension -eq '.h' -and `
|
||||
(-not ($_.FullName -like "*\mm\src\*" -or $_.FullName -like "*\mm\include\*")))) -and `
|
||||
(-not ($_.FullName -like "*\mm\assets\*")) }
|
||||
|
||||
foreach ($file in $files) {
|
||||
$relativePath = $file.FullName.Substring($basePath.Length + 1)
|
||||
Write-Host "Formatting $relativePath"
|
||||
.\clang-format.exe -i $file.FullName
|
||||
}
|
29
run-clang-format.sh
Executable file
29
run-clang-format.sh
Executable file
@ -0,0 +1,29 @@
|
||||
# this line does quite a bit, so let's break it down
|
||||
#
|
||||
# find mm
|
||||
# use "find" to look in the "mm" directory
|
||||
# this ensures we don't try to format stuff in the submodules
|
||||
#
|
||||
# -type f
|
||||
# only look for files
|
||||
#
|
||||
# -name "*.c" -o -name "*.cpp"
|
||||
# find all .c and .cpp files
|
||||
#
|
||||
# -name "*.h" ! -path "mm/src/**.h" ! -path "mm/include/**.h"
|
||||
# find all .h files that aren't in mm/src or mm/include
|
||||
# this is because zret decomp only runs clang-format on c files
|
||||
# https://github.com/zeldaret/mm/blob/b7e5468ca16315a7e322055eff3d97fe980bbc25/format.py#L182
|
||||
#
|
||||
# ! -path "mm/assets/*"
|
||||
# asset headers are autogenerated, don't fight them
|
||||
#
|
||||
# | sed 's| |\\ |g'
|
||||
# pipe the result of find into sed to
|
||||
# ensure all the paths returned by find have spaces escaped
|
||||
#
|
||||
# | xargs clang-format-14 -i
|
||||
# use xargs to take each path we've found
|
||||
# and pass it as an argument to clang-format
|
||||
|
||||
find mm -type f \( -name "*.c" -o -name "*.cpp" -o \( -name "*.h" ! -path "mm/src/**.h" ! -path "mm/include/**.h" \) \) ! -path "mm/assets/*" | sed 's| |\\ |g' | xargs clang-format-14 -i
|
Loading…
Reference in New Issue
Block a user