######### FUNZIONI COMUNI PER SCRIPT API GIT ######### #scrittura output & log Function WriteLogOutput { Param ($logFile, $logType, [string]$logString) #compongo path per file di log $logPath = Join-Path $logFolder $logFile #scrivo su file la stringa se il tipo di log รจ > o uguale al livello richiesto if ($logType -le $logLevel) { Add-content $logPath -value "$logString" #scrivo su terminale la stringa se $terminalOutput=1 if ($terminalOutput -eq 1) { Write-Output($logString) } } } #verifica esistenza folder di log Function CheckLogFolder { if (Test-Path $logFolder) { } else { New-Item $logFolder -ItemType Directory } } #rotazione file .log in .old Function RotateOldLog { $logPath = Join-Path $logFolder $logFile $oldLogPath = Join-Path $logFolder $oldLogFile #se file .old esiste sposto contenuto di attuale .log in coda a attuale .old e cancello attuale .log if (Test-Path $logPath){ if (Test-Path $oldLogPath) { $from = Get-Content -Path $logPath Add-Content -Path $oldLogPath -Value $from Remove-Item -Path $logPath } #se file .old non esiste rinomino attuale file.log in file.old else { Get-ChildItem $logPath | Rename-Item -NewName { $_.Name -replace '.log','.old' } } } } #creazione nuovo mirror Function FreshMirrorCreation { Param ($projectNumber, $user, $auth, $destination, $path) #compongo url da chiamare per creazione nuovo mirror $callUrlCreateMirror = "https://gitlab.steamware.net/api/v4/projects/" + $projectNumber + "/remote_mirrors" #creo url del nuovo mirror con username e token relativi a gitlab $newMirror = "https://" + $user + ":" + $auth + "@" + $destination + "/" + $path #creo body da convertire in json $body = @{ url = $newMirror enabled = 1 } #converto body in json prima di passarlo alla chiamata POST $jsonBody = ConvertTo-Json -InputObject $body #chiamata api POST che crea mirror con url e body specificati $rebuildResponse = Invoke-WebRequest -Method Post -URI $callUrlCreateMirror -Headers $gitlabHead -ContentType "application/json" -Body $jsonBody -UseBasicParsing #conversione da Json della risposta alla chiamata POST $parsedRebuild = $rebuildResponse.Content | ConvertFrom-Json #rilevo ID e URL nuovo mirror per scriverli nel log foreach ($item in $parsedRebuild) { $mirrorId = $($item.id) $mirrorUrl = $($item.url) } #scrivo ID e URL nuovo mirror WriteLogOutput $logFile 1 "NEW ID: $mirrorId - URL: $mirrorUrl - Mirror creato con successo" } Function TryParse-Json { param([string]$InputString) try { return $InputString | ConvertFrom-Json -ErrorAction Stop } catch { return $null } }