40 lines
1.5 KiB
PowerShell
40 lines
1.5 KiB
PowerShell
#!/usr/bin/env pwsh
|
||
# fix-lf.ps1 — 检查并修复 game-docker 中关键文件的行尾符(CRLF → LF)
|
||
# 在上传部署前运行,确保 shell 脚本等文件在 Linux 容器中可正常执行
|
||
|
||
$root = $PSScriptRoot
|
||
|
||
$patterns = @('*.sh', '*.conf', '*.env', 'Dockerfile', 'deploy.sh', 'init-ssl.sh',
|
||
'docker-compose*.yml', '*.yaml', 'entrypoint*')
|
||
|
||
Write-Host "扫描目录: $root" -ForegroundColor Cyan
|
||
Write-Host ""
|
||
|
||
$files = $patterns | ForEach-Object {
|
||
Get-ChildItem -Path $root -Recurse -Filter $_ -File
|
||
} | Sort-Object FullName -Unique
|
||
|
||
$crlfFiles = $files | Where-Object {
|
||
$bytes = [System.IO.File]::ReadAllBytes($_.FullName)
|
||
($bytes | Where-Object { $_ -eq 13 } | Measure-Object).Count -gt 0
|
||
}
|
||
|
||
if (-not $crlfFiles) {
|
||
Write-Host "✓ 所有关键文件行尾符正常(LF),无需修复。" -ForegroundColor Green
|
||
exit 0
|
||
}
|
||
|
||
Write-Host "发现 $($crlfFiles.Count) 个文件含 CRLF,正在修复..." -ForegroundColor Yellow
|
||
Write-Host ""
|
||
|
||
foreach ($f in $crlfFiles) {
|
||
$content = [System.IO.File]::ReadAllText($f.FullName)
|
||
$fixed = $content -replace "`r`n", "`n"
|
||
[System.IO.File]::WriteAllText($f.FullName, $fixed, [System.Text.UTF8Encoding]::new($false))
|
||
$rel = $f.FullName.Substring($root.Length + 1)
|
||
Write-Host " 已修复: $rel" -ForegroundColor Green
|
||
}
|
||
|
||
Write-Host ""
|
||
Write-Host "✓ 修复完成,共处理 $($crlfFiles.Count) 个文件。" -ForegroundColor Green
|