chore(home): mirror from kalinamall (4507ee0) with papatramp URLs
This commit is contained in:
@@ -0,0 +1,132 @@
|
||||
#Requires -Version 5.1
|
||||
<#
|
||||
.SYNOPSIS
|
||||
Стандартные git remote: home (papatramp), kalinamall, github (PTah).
|
||||
|
||||
.EXAMPLE
|
||||
cd C:\Users\papat\Projects\MyRepo
|
||||
& "$HOME\CursorRules\scripts\Set-GitRemotes.ps1"
|
||||
#>
|
||||
[CmdletBinding()]
|
||||
param(
|
||||
[string]$Owner = 'PapaTramp',
|
||||
[string]$GithubOrg = 'PTah',
|
||||
[string]$Repo = '',
|
||||
[switch]$SkipKalinamall,
|
||||
[switch]$WhatIf
|
||||
)
|
||||
|
||||
Set-StrictMode -Version Latest
|
||||
$ErrorActionPreference = 'Stop'
|
||||
|
||||
function Write-Step([string]$Message) { Write-Host "[*] $Message" -ForegroundColor Cyan }
|
||||
function Write-Ok([string]$Message) { Write-Host "[+] $Message" -ForegroundColor Green }
|
||||
|
||||
function Test-GitRepo {
|
||||
git rev-parse --is-inside-work-tree 2>$null | Out-Null
|
||||
if ($LASTEXITCODE -ne 0) {
|
||||
throw 'Run inside a git repository or pass -Repo.'
|
||||
}
|
||||
}
|
||||
|
||||
function Get-RepoNameFromRemoteUrl {
|
||||
param([string]$Url)
|
||||
if ($Url -match '/([^/]+?)(?:\.git)?/?$') {
|
||||
return $Matches[1]
|
||||
}
|
||||
return $null
|
||||
}
|
||||
|
||||
function Get-RepoName {
|
||||
param([string]$Name)
|
||||
if ($Name) { return $Name }
|
||||
|
||||
foreach ($remote in @('kalinamall', 'home', 'github', 'origin')) {
|
||||
$url = git remote get-url $remote 2>$null
|
||||
if ($url) {
|
||||
$fromUrl = Get-RepoNameFromRemoteUrl -Url $url.Trim()
|
||||
if ($fromUrl) { return $fromUrl }
|
||||
}
|
||||
}
|
||||
|
||||
return (Split-Path -Leaf (git rev-parse --show-toplevel))
|
||||
}
|
||||
|
||||
function Get-OriginRemoteTarget {
|
||||
$url = (git remote get-url origin 2>$null)
|
||||
if (-not $url) { return $null }
|
||||
$lower = $url.ToLower()
|
||||
if ($lower -match 'kalinamall') { return 'kalinamall' }
|
||||
if ($lower -match 'papatramp') { return 'home' }
|
||||
if ($lower -match 'github\.com') { return 'github' }
|
||||
return $null
|
||||
}
|
||||
|
||||
function Set-Remote {
|
||||
param(
|
||||
[string]$Name,
|
||||
[string]$Url
|
||||
)
|
||||
|
||||
$existing = @(git remote 2>$null)
|
||||
$has = $existing -contains $Name
|
||||
|
||||
if ($WhatIf) {
|
||||
Write-Step "WhatIf: remote $Name -> $Url"
|
||||
return
|
||||
}
|
||||
|
||||
if ($has) {
|
||||
$current = (git remote get-url $Name 2>$null).Trim()
|
||||
if ($current -eq $Url) {
|
||||
Write-Ok "remote $Name OK"
|
||||
return
|
||||
}
|
||||
git remote set-url $Name $Url
|
||||
Write-Ok "remote $Name updated -> $Url"
|
||||
return
|
||||
}
|
||||
|
||||
if ($existing -contains 'origin') {
|
||||
$originTarget = Get-OriginRemoteTarget
|
||||
if ($originTarget -eq $Name) {
|
||||
git remote rename origin $Name
|
||||
git remote set-url $Name $Url
|
||||
Write-Ok "remote origin renamed to $Name -> $Url"
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
$legacy = @{
|
||||
home = @('gitea', 'papatramp', 'origin-home')
|
||||
github = @()
|
||||
kalinamall = @('gitea-kalinamall', 'kalina')
|
||||
}
|
||||
foreach ($old in $legacy[$Name]) {
|
||||
if ($existing -contains $old) {
|
||||
git remote rename $old $Name
|
||||
git remote set-url $Name $Url
|
||||
Write-Ok "remote $old renamed to $Name -> $Url"
|
||||
return
|
||||
}
|
||||
}
|
||||
|
||||
git remote add $Name $Url
|
||||
Write-Ok "remote $Name added -> $Url"
|
||||
}
|
||||
|
||||
Test-GitRepo
|
||||
$repoName = Get-RepoName -Name $Repo
|
||||
|
||||
$homeUrl = "ssh://git@git.papatramp.ru:2222/${Owner}/${repoName}.git"
|
||||
$kalinamallUrl = "ssh://git@git.kalinamall.ru:2222/${Owner}/${repoName}.git"
|
||||
$githubUrl = "git@github.com:${GithubOrg}/${repoName}.git"
|
||||
|
||||
Write-Step "Repo: $repoName"
|
||||
Set-Remote -Name 'home' -Url $homeUrl
|
||||
Set-Remote -Name 'kalinamall' -Url $kalinamallUrl
|
||||
Set-Remote -Name 'github' -Url $githubUrl
|
||||
|
||||
Write-Host ''
|
||||
Write-Host 'Remotes:' -ForegroundColor Magenta
|
||||
git remote -v
|
||||
Reference in New Issue
Block a user