Migration complète vers PrimeFaces Freya - Corrections des incompatibilités et intégration de primefaces-freya-extension

This commit is contained in:
lionsdev
2025-12-27 00:18:31 +00:00
parent 5e272a8256
commit 5c996931a6
206 changed files with 36646 additions and 1593 deletions

View File

@@ -0,0 +1,288 @@
#!/usr/bin/env pwsh
<#
.SYNOPSIS
Script pour pousser Lions User Manager sur git.lions.dev
.DESCRIPTION
Ce script crée les repositories et pousse les modules de lions-user-manager
sur git.lions.dev pour permettre le déploiement avec lionsctl pipeline.
.PARAMETER Component
Composant à pousser: 'api', 'server', 'client', ou 'all' (défaut: 'all')
.EXAMPLE
.\push-to-git-lions.ps1 -Component all
.EXAMPLE
.\push-to-git-lions.ps1 -Component client
#>
param(
[Parameter(Mandatory=$false)]
[ValidateSet('api', 'server', 'client', 'all')]
[string]$Component = 'all'
)
# Configuration
$ErrorActionPreference = "Stop"
$GitServer = "https://git.lions.dev"
$GitOrg = "lionsdev"
$ApiRepo = "lions-user-manager-server-api"
$ServerRepo = "lions-user-manager-server-impl-quarkus"
$ClientRepo = "lions-user-manager-client-quarkus-primefaces-freya"
# Identifiants Git
$GitUsername = "lionsdev"
$GitPassword = "lions@2025"
# Chemins
$ScriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
$ProjectRoot = Split-Path -Parent $ScriptDir
$ApiPath = Join-Path $ProjectRoot "lions-user-manager-server-api"
$ServerPath = Join-Path $ProjectRoot "lions-user-manager-server-impl-quarkus"
$ClientPath = Join-Path $ProjectRoot "lions-user-manager-client-quarkus-primefaces-freya"
# Couleurs
function Write-Success { Write-Host "$args" -ForegroundColor Green }
function Write-Info { Write-Host " $args" -ForegroundColor Cyan }
function Write-Warning { Write-Host "⚠️ $args" -ForegroundColor Yellow }
function Write-Error { Write-Host "$args" -ForegroundColor Red }
function Write-Step { Write-Host "`n🚀 $args" -ForegroundColor Magenta }
# Vérifier Git
function Test-Git {
if (-not (Get-Command git -ErrorAction SilentlyContinue)) {
Write-Error "Git n'est pas installé ou n'est pas dans le PATH"
exit 1
}
Write-Success "Git trouvé: $(git --version)"
}
# Vérifier si un dépôt existe (via API Gitea)
function Test-GitRepository {
param(
[string]$RepoName
)
$repoUrl = "$GitServer/api/v1/repos/$GitOrg/$RepoName"
$auth = [Convert]::ToBase64String([Text.Encoding]::ASCII.GetBytes("${GitUsername}:${GitPassword}"))
$headers = @{
"Authorization" = "Basic $auth"
}
try {
$response = Invoke-RestMethod -Uri $repoUrl -Method Get -Headers $headers -ErrorAction SilentlyContinue
Write-Success "Dépôt $RepoName existe déjà"
return $true
} catch {
Write-Warning "Dépôt $RepoName n'existe pas. Veuillez le créer manuellement sur git.lions.dev"
Write-Info "URL: $GitServer/$GitOrg/$RepoName"
return $false
}
}
# Pousser un module
function Push-Module {
param(
[string]$ModulePath,
[string]$RepoName,
[string]$Description,
[string]$ComponentName
)
Write-Step "Push du $ComponentName vers git.lions.dev..."
if (-not (Test-Path $ModulePath)) {
Write-Error "Répertoire $ComponentName introuvable: $ModulePath"
return $false
}
# Vérifier si le dépôt existe (optionnel, on essaie quand même de pousser)
Write-Info "Vérification de l'existence du dépôt $RepoName..."
$repoExists = Test-GitRepository -RepoName $RepoName
if (-not $repoExists) {
Write-Warning "Le dépôt $RepoName n'a pas été trouvé via l'API, mais on essaie quand même de pousser..."
Write-Info "Si le push échoue, assurez-vous que le dépôt existe sur $GitServer/$GitOrg/$RepoName"
}
Push-Location $ModulePath
try {
# Vérifier si c'est un repo Git
if (-not (Test-Path ".git")) {
Write-Info "Initialisation du repository Git..."
git init
git add .
git commit -m "Initial commit - $Description"
} else {
# Ajouter tous les fichiers modifiés
git add .
$hasChanges = git diff --cached --quiet
if (-not $hasChanges) {
git commit -m "Update - $Description" 2>$null
}
}
# Vérifier la branche
$currentBranch = git branch --show-current
if ([string]::IsNullOrEmpty($currentBranch)) {
Write-Info "Création de la branche main..."
git checkout -b main 2>$null
} elseif ($currentBranch -ne "main") {
Write-Info "Renommage de la branche $currentBranch en main..."
git branch -M main 2>$null
}
# Ajouter le remote git.lions.dev
$remoteUrl = "$GitServer/$GitOrg/$RepoName.git"
Write-Info "Ajout du remote: $remoteUrl"
git remote remove lions 2>$null
git remote add lions $remoteUrl
# Encoder le mot de passe pour l'URL (le @ doit être %40)
$encodedPassword = [System.Web.HttpUtility]::UrlEncode($GitPassword)
$remoteUrlWithAuth = "$($GitServer.Replace('https://',"https://${GitUsername}:${encodedPassword}@"))/$GitOrg/$RepoName.git"
git remote set-url lions $remoteUrlWithAuth
# Pousser vers git.lions.dev
Write-Info "Push vers git.lions.dev..."
Write-Info "URL: $remoteUrl"
$env:GIT_TERMINAL_PROMPT = "0"
$env:GIT_ASKPASS = "echo"
git push lions main --force 2>&1 | Out-String | Write-Host
if ($LASTEXITCODE -eq 0) {
Write-Success "$ComponentName poussé avec succès vers git.lions.dev"
Write-Info "URL: $remoteUrl"
return $true
} else {
Write-Error "Échec du push du $ComponentName"
return $false
}
} finally {
Pop-Location
}
}
# Afficher les commandes de déploiement
function Show-DeploymentCommands {
Write-Step "Commandes de déploiement avec lionsctl:"
Write-Host @"
📋 COMMANDES DE DÉPLOIEMENT
"@ -ForegroundColor Cyan
if ($Component -eq 'server' -or $Component -eq 'all') {
Write-Host "🔨 SERVER (Backend Quarkus):" -ForegroundColor Yellow
Write-Host ""
Write-Host "# Développement (cluster k1)" -ForegroundColor Gray
Write-Host "cd ../lions-infrastructure-2025/lionsctl" -ForegroundColor White
Write-Host "./lionsctl.exe pipeline -u https://git.lions.dev/lionsdev/$ServerRepo -b main -j 17 -e dev -c k1 -m gbanedahoud@gmail.com" -ForegroundColor Green
Write-Host ""
Write-Host "# Production (cluster k2)" -ForegroundColor Gray
Write-Host "cd ../lions-infrastructure-2025/lionsctl" -ForegroundColor White
Write-Host "./lionsctl.exe pipeline -u https://git.lions.dev/lionsdev/$ServerRepo -b main -j 17 -e production -c k2 -m gbanedahoud@gmail.com" -ForegroundColor Green
Write-Host ""
}
if ($Component -eq 'client' -or $Component -eq 'all') {
Write-Host "🎨 CLIENT (Frontend Quarkus PrimeFaces):" -ForegroundColor Yellow
Write-Host ""
Write-Host "# Développement (cluster k1)" -ForegroundColor Gray
Write-Host "cd ../lions-infrastructure-2025/lionsctl" -ForegroundColor White
Write-Host "./lionsctl.exe pipeline -u https://git.lions.dev/lionsdev/$ClientRepo -b main -j 17 -e dev -c k1 -m gbanedahoud@gmail.com" -ForegroundColor Green
Write-Host ""
Write-Host "# Production (cluster k2)" -ForegroundColor Gray
Write-Host "cd ../lions-infrastructure-2025/lionsctl" -ForegroundColor White
Write-Host "./lionsctl.exe pipeline -u https://git.lions.dev/lionsdev/$ClientRepo -b main -j 17 -e production -c k2 -m gbanedahoud@gmail.com" -ForegroundColor Green
Write-Host ""
}
Write-Host @"
💡 ASTUCE: Copiez-collez ces commandes pour déployer avec lionsctl !
"@ -ForegroundColor Cyan
}
# Main
function Main {
Write-Host @"
🚀 PUSH LIONS USER MANAGER VERS GIT.LIONS.DEV 🚀
"@ -ForegroundColor Cyan
Write-Info "Composant: $Component"
Write-Info "Serveur Git: $GitServer"
Write-Info "Organisation: $GitOrg"
Write-Info ""
# Vérifier Git
Test-Git
# Push
$success = $true
if ($Component -eq 'api' -or $Component -eq 'all') {
$result = Push-Module -ModulePath $ApiPath -RepoName $ApiRepo `
-Description "Lions User Manager - Server API (DTOs, Interfaces)" `
-ComponentName "API"
$success = $success -and $result
}
if ($Component -eq 'server' -or $Component -eq 'all') {
$result = Push-Module -ModulePath $ServerPath -RepoName $ServerRepo `
-Description "Lions User Manager - Server Implementation (Quarkus)" `
-ComponentName "Server"
$success = $success -and $result
}
if ($Component -eq 'client' -or $Component -eq 'all') {
$result = Push-Module -ModulePath $ClientPath -RepoName $ClientRepo `
-Description "Lions User Manager - Client (Quarkus PrimeFaces Freya)" `
-ComponentName "Client"
$success = $success -and $result
}
if ($success) {
# Afficher les commandes de déploiement
Show-DeploymentCommands
Write-Host @"
PUSH TERMINÉ AVEC SUCCÈS !
Vous pouvez maintenant déployer avec lionsctl pipeline (voir ci-dessus)
"@ -ForegroundColor Green
} else {
Write-Error "Certains push ont échoué. Vérifiez les erreurs ci-dessus."
exit 1
}
}
# Exécuter
Main