Files
Orchestrator/bahn/project-audit/scripts/fetch-pom-files.ps1
ankn a5f8fb49ab Migrate all repos into monorepo context folders
Bahn: aisupport, Analyse-O2C-C2S, awesome-bahn-mcp-servers, beam-mcp,
      Confluence_Bot, db-planet-mcp-server, O2C-Harness, project-audit,
      Projekt-KIQ-HP, teamlandkarte-mcp
Dhive: Jury-Voting
Privat: CV, NoteGraph (NOTE: NoteGraph needs complete redo after consolidation)
Shared: AI-Orchestrator, OrgMyLife, power_skills_and_more
Shared/references: symphony (read-only)

Bahn repos remain available as independent remotes - this monorepo
pulls them in via subtree, the originals are untouched.
2026-06-30 20:39:52 +02:00

147 lines
6.2 KiB
PowerShell

<#
.SYNOPSIS
Zieht pom.xml und package.json der Kern-Services fuer Versionsanalyse
#>
$GitLabUrl = "https://git.tech.rz.db.de"
$ApiBase = "$GitLabUrl/api/v4"
$OutputDir = "project-audit\data\pom-analysis"
[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12
$Token = Read-Host "GitLab Token (read_api)"
$Headers = @{ "PRIVATE-TOKEN" = $Token }
# Kern-Services (apps/ + libraries/ + ausgewaehlte apis/)
$Projects = @(
@{ path = "bestellsystem1/apps/steuerung-vertrieb"; name = "steuerung-vertrieb" }
@{ path = "bestellsystem1/apps/auftrags-verwaltung-trasse"; name = "auftrags-verwaltung-trasse" }
@{ path = "bestellsystem1/apps/portal-middleware"; name = "portal-middleware" }
@{ path = "bestellsystem1/apps/portal-ui"; name = "portal-ui" }
@{ path = "bestellsystem1/apps/common-interface"; name = "common-interface" }
@{ path = "bestellsystem1/apps/stammdaten-bereitstellung"; name = "stammdaten-bereitstellung" }
@{ path = "bestellsystem1/apps/kundendaten-bereitstellung"; name = "kundendaten-bereitstellung" }
@{ path = "bestellsystem1/apps/ifp-connector"; name = "ifp-connector" }
@{ path = "bestellsystem1/apps/taftap-tdm-konverter"; name = "taftap-tdm-konverter" }
@{ path = "bestellsystem1/apps/vertragsdaten-verteiler"; name = "vertragsdaten-verteiler" }
@{ path = "bestellsystem1/apps/archivierungsservice"; name = "archivierungsservice" }
@{ path = "bestellsystem1/apps/rabattnummern-bereitstellung"; name = "rabattnummern-bereitstellung" }
@{ path = "bestellsystem1/apps/tbv-absicherung-konverter"; name = "tbv-absicherung-konverter" }
@{ path = "bestellsystem1/apps/tadef-connector"; name = "tadef-connector" }
@{ path = "bestellsystem1/apps/auftrag-service"; name = "auftrag-service" }
@{ path = "bestellsystem1/apps/bestellsystem-parent-pom"; name = "bestellsystem-parent-pom" }
@{ path = "bestellsystem1/libraries/core-components-common"; name = "core-components-common" }
@{ path = "bestellsystem1/libraries/core-components-kafka"; name = "core-components-kafka" }
@{ path = "bestellsystem1/libraries/core-components-test"; name = "core-components-test" }
@{ path = "bestellsystem1/libraries/logging-utils"; name = "logging-utils" }
@{ path = "bestellsystem1/libraries/signature-database"; name = "signature-database" }
@{ path = "bestellsystem1/libraries/signature-message"; name = "signature-message" }
@{ path = "bestellsystem1/apis/data-model"; name = "data-model-api" }
)
New-Item -ItemType Directory -Path $OutputDir -Force | Out-Null
Write-Host "Lade pom.xml / package.json fuer $($Projects.Count) Projekte..."
foreach ($Proj in $Projects) {
$Encoded = [Uri]::EscapeDataString($Proj.path)
$Name = $Proj.name
Write-Host " $Name..." -NoNewline
# pom.xml versuchen (main, dann master)
$Found = $false
foreach ($Branch in @("main", "master")) {
foreach ($File in @("pom.xml", "package.json")) {
$Uri = "$ApiBase/projects/$Encoded/repository/files/$([Uri]::EscapeDataString($File))/raw?ref=$Branch"
try {
$Resp = Invoke-WebRequest -Uri $Uri -Headers $Headers -UseBasicParsing -ErrorAction Stop
$OutPath = Join-Path $OutputDir "$Name`_$File"
$Resp.Content | Out-File -FilePath $OutPath -Encoding UTF8
Write-Host " $File ($Branch)" -ForegroundColor Green
$Found = $true
break
} catch { continue }
}
if ($Found) { break }
}
if (-not $Found) { Write-Host " nicht gefunden" -ForegroundColor Yellow }
}
# Analyse: Spring Boot + Java Versionen extrahieren
Write-Host ""
Write-Host ">> Analysiere Versionen..." -ForegroundColor Yellow
$Results = @()
$PomFiles = Get-ChildItem $OutputDir -Filter "*_pom.xml"
foreach ($Pom in $PomFiles) {
$Name = $Pom.Name -replace "_pom.xml", ""
$Content = Get-Content $Pom.FullName -Raw
$SpringBoot = ""
$Java = ""
$Parent = ""
$Camunda = ""
# Spring Boot Version
if ($Content -match "spring-boot-starter-parent.*?<version>(.*?)</version>") { $SpringBoot = $Matches[1] }
if ($Content -match "spring\.boot\.version.*?>(.*?)<") { $SpringBoot = $Matches[1] }
if ($Content -match "spring-boot\.version.*?>(.*?)<") { $SpringBoot = $Matches[1] }
# Java Version
if ($Content -match "<java\.version>(.*?)</java\.version>") { $Java = $Matches[1] }
if ($Content -match "<maven\.compiler\.source>(.*?)</maven\.compiler\.source>") { $Java = $Matches[1] }
# Parent POM
if ($Content -match "<parent>.*?<artifactId>(.*?)</artifactId>.*?<version>(.*?)</version>.*?</parent>") {
$Parent = "$($Matches[1]):$($Matches[2])"
}
# Camunda
if ($Content -match "camunda.*?<version>(.*?)</version>") { $Camunda = $Matches[1] }
$Results += [PSCustomObject]@{
Service = $Name
SpringBoot = $SpringBoot
Java = $Java
Parent = $Parent
Camunda = $Camunda
}
}
# Package.json analysieren
$PkgFiles = Get-ChildItem $OutputDir -Filter "*_package.json"
foreach ($Pkg in $PkgFiles) {
$Name = $Pkg.Name -replace "_package.json", ""
$Content = Get-Content $Pkg.FullName -Raw | ConvertFrom-Json
$Angular = ""
if ($Content.dependencies -and $Content.dependencies.'@angular/core') {
$Angular = $Content.dependencies.'@angular/core'
}
$Results += [PSCustomObject]@{
Service = $Name
SpringBoot = ""
Java = ""
Parent = ""
Camunda = ""
Angular = $Angular
NodeVersion = if ($Content.engines -and $Content.engines.node) { $Content.engines.node } else { "" }
}
}
# Ergebnis speichern
$ResultPath = Join-Path $OutputDir "version-analysis.md"
$Md = @("# Versionsanalyse pathOS Kern-Services", "", "| Service | Spring Boot | Java | Parent POM | Camunda |")
$Md += "|---------|------------|------|------------|---------|"
foreach ($R in $Results) {
$Md += "| $($R.Service) | $($R.SpringBoot) | $($R.Java) | $($R.Parent) | $($R.Camunda) |"
}
$Md -join "`n" | Out-File -FilePath $ResultPath -Encoding UTF8
$Results | Export-Csv -Path (Join-Path $OutputDir "version-analysis.csv") -Delimiter ";" -Encoding UTF8 -NoTypeInformation
Write-Host ""
Write-Host "FERTIG! Ergebnisse in $OutputDir" -ForegroundColor Green
$Results | Format-Table -AutoSize