pdca0-dev-hub/cmd/set-git-config.ps1

113 lines
3.4 KiB
PowerShell

<#
.SYNOPSIS
Script per impostare username e email Git su tutti i repository nella cartella di progetto
.DESCRIPTION
Questo script cerca tutti i repository Git nella directory radice del progetto
e imposta il nome utente e l'email specificati per ciascuno di essi.
.PARAMETER Username
Il nome utente Git da impostare
.PARAMETER Email
L'indirizzo email Git da impostare
.PARAMETER RootDir
La directory radice in cui cercare i repository Git
.EXAMPLE
.\set-git-config-new.ps1 -Username "Mario Rossi" -Email "mario.rossi@intesasanpaolo.com" -RootDir "C:\Users\MarioRossi\progetti"
#>
param (
[Parameter(Mandatory=$true)]
[string]$Username,
[Parameter(Mandatory=$true)]
[string]$Email,
[Parameter(Mandatory=$true)]
[string]$RootDir
)
# Funzione per verificare se una directory è un repository Git
function Is-GitRepository {
param ([string]$Directory)
return (Test-Path -Path "$Directory\.git" -PathType Container)
}
# Funzione per impostare la configurazione Git in un repository
function Set-GitConfig {
param (
[string]$RepoPath,
[string]$Username,
[string]$Email
)
try {
Push-Location $RepoPath
Write-Host "Configurazione di $RepoPath" -ForegroundColor Cyan
# Imposta nome utente e email
git config user.name "$Username"
git config user.email "$Email"
# Verifica che le impostazioni siano state applicate correttamente
$configName = git config user.name
$configEmail = git config user.email
if ($configName -eq $Username -and $configEmail -eq $Email) {
Write-Host "Configurazione completata con successo" -ForegroundColor Green
} else {
Write-Host "Errore nella configurazione" -ForegroundColor Red
}
}
catch {
Write-Host "Errore durante la configurazione: $_" -ForegroundColor Red
}
finally {
Pop-Location
}
}
# Verifica se la directory radice esiste
if (-not (Test-Path -Path $RootDir)) {
Write-Host "La directory $RootDir non esiste!" -ForegroundColor Red
exit 1
}
# Trova tutte le directory di primo livello nella directory radice
$directories = Get-ChildItem -Path $RootDir -Directory
# Contatori per statistiche
$totalRepos = 0
$successfulRepos = 0
Write-Host "Ricerca dei repository Git in $RootDir..." -ForegroundColor Yellow
# Itera su tutte le directory di primo livello
foreach ($dir in $directories) {
$dirPath = $dir.FullName
# Verifica se la directory è un repository Git
if (Is-GitRepository -Directory $dirPath) {
$totalRepos++
Write-Host "Repository trovato: $dirPath" -ForegroundColor Blue
# Imposta la configurazione Git
Set-GitConfig -RepoPath $dirPath -Username $Username -Email $Email
$successfulRepos++
}
}
Write-Host ""
Write-Host "====== Riepilogo ======" -ForegroundColor Magenta
Write-Host "Repository trovati: $totalRepos" -ForegroundColor White
Write-Host "Repository configurati: $successfulRepos" -ForegroundColor White
if ($totalRepos -eq 0) {
Write-Host "Nessun repository Git trovato nella directory $RootDir" -ForegroundColor Yellow
}
elseif ($totalRepos -eq $successfulRepos) {
Write-Host "Tutti i repository sono stati configurati correttamente!" -ForegroundColor Green
}
else {
Write-Host "Alcuni repository non sono stati configurati correttamente." -ForegroundColor Red
}