# Rewrite cross-repo URLs in tracked docs/config for the target Git host. # Usage: .\scripts\Rewrite-GitHostUrls.ps1 github|kalinamall|papatramp param( [Parameter(Mandatory = $true)] [ValidateSet('github', 'kalinamall', 'papatramp')] [string]$Target ) $ErrorActionPreference = 'Stop' $Root = Split-Path -Parent $PSScriptRoot Set-Location $Root switch ($Target) { 'github' { $Base = 'https://github.com/PTah' $BlobSuffix = '/blob/main' } 'kalinamall' { $Base = 'https://git.kalinamall.ru/PapaTramp' $BlobSuffix = '/src/branch/main' } 'papatramp' { $Base = 'https://git.papatramp.ru/PTah' $BlobSuffix = '/src/branch/main' } } $BaseHost = $Base -replace '^https://', '' $patterns = @( @{ From = 'https://git.kalinamall.ru/PapaTramp/([^)/''"\s]+)/blob/main/'; To = "$Base/`$1$BlobSuffix/" } @{ From = 'https://git.kalinamall.ru/PapaTramp/([^)/''"\s]+)/src/branch/main/'; To = "$Base/`$1$BlobSuffix/" } @{ From = 'https://git.kalinamall.ru/PapaTramp/([^)/''"\s]+)/src/branch/main/'; To = "$Base/`$1$BlobSuffix/" } @{ From = 'https://git.kalinamall.ru/PapaTramp/'; To = "$Base/" } @{ From = 'https://git.kalinamall.ru/PapaTramp/'; To = "$Base/" } @{ From = 'https://git.kalinamall.ru/PapaTramp/'; To = "$Base/" } @{ From = 'git.kalinamall.ru/PapaTramp/'; To = "$BaseHost/" } @{ From = 'git.kalinamall.ru/PapaTramp/'; To = "$BaseHost/" } @{ From = 'git.kalinamall.ru/PapaTramp/'; To = "$BaseHost/" } ) $extensions = @('*.md', '*.json', '*.service', '*.example', '*.sh', '*.ps1', '*.yml', '*.yaml') $files = git ls-files $extensions 2>$null | Where-Object { $_ -and (Test-Path $_) } foreach ($file in $files) { $content = [System.IO.File]::ReadAllText((Join-Path $Root $file)) $updated = $content foreach ($p in $patterns) { $updated = [regex]::Replace($updated, $p.From, $p.To) } if ($updated -ne $content) { [System.IO.File]::WriteAllText((Join-Path $Root $file), $updated, [System.Text.UTF8Encoding]::new($false)) Write-Output "updated: $file" } } Write-Output "Rewrite-GitHostUrls: target=$Target base=$Base"