| 
1 | 1 | $MD = "PES"  | 
2 | 2 | $VCREDIST_REF = "https://aka.ms/vs/17/release/vc_redist.x64.exe"  | 
3 |  | -$ETCD_REF = "https://github.com/etcd-io/etcd/releases/download/v3.5.18/etcd-v3.5.18-windows-amd64.zip"  | 
4 |  | -$PATRONI_REF = "https://github.com/patroni/patroni/archive/refs/tags/v4.0.5.zip"  | 
 | 3 | +$ETCD_REF = "https://github.com/etcd-io/etcd/releases/download/v3.5.21/etcd-v3.5.21-windows-amd64.zip"  | 
 | 4 | +$PATRONI_REF = "https://github.com/patroni/patroni/archive/refs/tags/v4.0.6.zip"  | 
5 | 5 | $MICRO_REF = "https://github.com/zyedidia/micro/releases/download/v2.0.14/micro-2.0.14-win64.zip"  | 
6 | 6 | $WINSW_REF = "https://github.com/winsw/winsw/releases/download/v2.12.0/WinSW.NET461.exe"  | 
7 |  | -$VIP_REF = "https://github.com/cybertec-postgresql/vip-manager/releases/download/v3.0.0/vip-manager_3.0.0_Windows_x86_64.zip"  | 
8 |  | -$PGSQL_REF = "https://get.enterprisedb.com/postgresql/postgresql-15.12-1-windows-x64-binaries.zip"  | 
9 |  | -$PYTHON_REF = "https://www.python.org/ftp/python/3.13.2/python-3.13.2-amd64.exe"  | 
 | 7 | +$VIP_REF = "https://github.com/cybertec-postgresql/vip-manager/releases/download/v4.0.0/vip-manager_4.0.0_Windows_x86_64.zip"  | 
 | 8 | +$PGSQL_REF = "https://get.enterprisedb.com/postgresql/postgresql-17.5-1-windows-x64-binaries.zip"  | 
 | 9 | +$PYTHON_REF = "https://www.python.org/ftp/python/3.13.5/python-3.13.5-amd64.exe"  | 
10 | 10 | # one should change python version in github action workflows when changed here  | 
11 | 11 | 
 
  | 
12 | 12 | $SEVENZIP = "C:\Program Files\7-Zip\7z.exe"  | 
13 | 13 | 
 
  | 
 | 14 | +function Extract-ZipFile {  | 
 | 15 | +    param (  | 
 | 16 | +        [string]$zipFilePath,  | 
 | 17 | +        [string]$destinationPath  | 
 | 18 | +    )  | 
 | 19 | +    if (Test-Path $SEVENZIP) {  | 
 | 20 | +        & $SEVENZIP x "$zipFilePath" -o"$destinationPath"  | 
 | 21 | +        Start-Sleep -Seconds 5  | 
 | 22 | +    }  | 
 | 23 | +    else {  | 
 | 24 | +        Expand-Archive -Path "$zipFilePath" -DestinationPath "$destinationPath"  | 
 | 25 | +    }  | 
 | 26 | +    Remove-Item -Force "$zipFilePath" -ErrorAction Ignore  | 
 | 27 | +}  | 
 | 28 | + | 
 | 29 | +function Compress-ToZipFile {  | 
 | 30 | +    param (  | 
 | 31 | +        [string]$sourcePath,  | 
 | 32 | +        [string]$destinationPath  | 
 | 33 | +    )  | 
 | 34 | +    if (Test-Path $SEVENZIP) {  | 
 | 35 | +        & $SEVENZIP a "$destinationPath" -y "$sourcePath"  | 
 | 36 | +    }  | 
 | 37 | +    else {  | 
 | 38 | +        Compress-Archive -Path "$sourcePath" -DestinationPath "$destinationPath"  | 
 | 39 | +    }  | 
 | 40 | +}  | 
 | 41 | + | 
 | 42 | +function Start-Bootstrapping {  | 
 | 43 | +    Write-Host "`n--- Start bootstrapping ---" -ForegroundColor blue  | 
 | 44 | +    & ./clean.ps1  | 
 | 45 | +    New-Item -ItemType Directory -Path $MD  | 
 | 46 | +    Copy-Item "src\*.bat" $MD  | 
 | 47 | +    Copy-Item "src\*.ps1" $MD  | 
 | 48 | +    Copy-Item "doc" "$MD\doc" -Recurse  | 
 | 49 | +    Write-Host "`n--- End bootstrapping ---" -ForegroundColor green  | 
 | 50 | +}  | 
 | 51 | + | 
 | 52 | +function Get-VCRedist {  | 
 | 53 | +    Write-Host "`n--- Download VCREDIST ---" -ForegroundColor blue  | 
 | 54 | +    Invoke-WebRequest -Uri $VCREDIST_REF -OutFile "$MD\vc_redist.x64.exe"  | 
 | 55 | +    Write-Host "`n--- VCREDIST downloaded ---" -ForegroundColor green  | 
 | 56 | +}  | 
 | 57 | + | 
 | 58 | +function Get-ETCD {  | 
 | 59 | +    Write-Host "`n--- Download ETCD ---" -ForegroundColor blue  | 
 | 60 | +    Invoke-WebRequest -Uri $ETCD_REF -OutFile "$env:TEMP\etcd.zip"  | 
 | 61 | +    Extract-ZipFile "$env:TEMP\etcd.zip" "$MD"  | 
 | 62 | +    Rename-Item "$MD\etcd-*" "etcd"  | 
 | 63 | +    Copy-Item "src\etcd.yaml" "$MD\etcd"  | 
 | 64 | +    Write-Host "`n--- ETCD downloaded ---" -ForegroundColor green  | 
 | 65 | +}  | 
 | 66 | + | 
 | 67 | +function Get-Micro {  | 
 | 68 | +    Write-Host "`n--- Download MICRO ---" -ForegroundColor blue  | 
 | 69 | +    Invoke-WebRequest -Uri $MICRO_REF -OutFile "$env:TEMP\micro.zip"  | 
 | 70 | +    Extract-ZipFile "$env:TEMP\micro.zip" "$MD"  | 
 | 71 | +    Rename-Item "$MD\micro-*" "micro"  | 
 | 72 | +    Write-Host "`n--- MICRO downloaded ---" -ForegroundColor green  | 
 | 73 | +}  | 
 | 74 | + | 
 | 75 | +function Get-VIPManager {  | 
 | 76 | +    Write-Host "`n--- Download VIP-MANAGER ---" -ForegroundColor blue  | 
 | 77 | +    Invoke-WebRequest -Uri $VIP_REF -OutFile "$env:TEMP\vip.zip"  | 
 | 78 | +    Extract-ZipFile "$env:TEMP\vip.zip" "$MD"  | 
 | 79 | +    Rename-Item "$MD\vip-manager*" "vip-manager"  | 
 | 80 | +    Remove-Item "$MD\vip-manager\*.yml" -ErrorAction Ignore  | 
 | 81 | +    Copy-Item "src\vip.yaml" "$MD\vip-manager"  | 
 | 82 | +    Write-Host "`n--- VIP-MANAGER downloaded ---" -ForegroundColor green  | 
 | 83 | +}  | 
 | 84 | + | 
 | 85 | +function Get-PostgreSQL {  | 
 | 86 | +    Write-Host "`n--- Download POSTGRESQL ---" -ForegroundColor blue  | 
 | 87 | +    # Example: prompt for credentials if not already set  | 
 | 88 | +    if (-not $PGSQL_CREDENTIAL) {  | 
 | 89 | +        $global:PGSQL_CREDENTIAL = Get-Credential -Message "Enter credentials for PostgreSQL download"  | 
 | 90 | +    }  | 
 | 91 | +    Invoke-WebRequest -Uri $PGSQL_REF -OutFile "$env:TEMP\pgsql.zip" -Credential $PGSQL_CREDENTIAL  | 
 | 92 | +    Extract-ZipFile "$env:TEMP\pgsql.zip" "$MD"  | 
 | 93 | +    Remove-Item -Recurse -Force "$MD\pgsql\pgAdmin 4", "$MD\pgsql\symbols" -ErrorAction Ignore  | 
 | 94 | +    Write-Host "`n--- POSTGRESQL downloaded ---" -ForegroundColor green  | 
 | 95 | +}  | 
 | 96 | + | 
 | 97 | +function Get-Patroni {  | 
 | 98 | +    Write-Host "`n--- Download PATRONI ---" -ForegroundColor blue  | 
 | 99 | +    Invoke-WebRequest -Uri $PATRONI_REF -OutFile "$env:TEMP\patroni.zip"  | 
 | 100 | +    Extract-ZipFile "$env:TEMP\patroni.zip" "$MD"  | 
 | 101 | +    Rename-Item "$MD\patroni-*" "patroni"  | 
 | 102 | +    Remove-Item "$MD\patroni\postgres?.yml" -ErrorAction Ignore  | 
 | 103 | +    Copy-Item "src\patroni.yaml" "$MD\patroni"  | 
 | 104 | +    Write-Host "`n--- PATRONI downloaded ---" -ForegroundColor green  | 
 | 105 | +}  | 
 | 106 | + | 
 | 107 | +function Update-PythonAndPIP {  | 
 | 108 | +    Write-Host "`n--- Update Python and PIP installation ---" -ForegroundColor blue  | 
 | 109 | +    & "./install-python.ps1"  | 
 | 110 | +    Move-Item "python-install.exe" "$MD"  | 
 | 111 | +    Write-Host "`n--- Python and PIP installation updated ---" -ForegroundColor green  | 
 | 112 | +}  | 
 | 113 | + | 
 | 114 | +function Get-PatroniPackages {  | 
 | 115 | +    Write-Host "`n--- Download PATRONI packages ---" -ForegroundColor blue  | 
 | 116 | +    Set-Location "$MD\patroni"  | 
 | 117 | +    & $PIP download -r requirements.txt -d .patroni-packages  | 
 | 118 | +    & $PIP download pip pip_install setuptools wheel cdiff psycopg psycopg-binary -d .patroni-packages  | 
 | 119 | +    Set-Location -Path "..\.."  | 
 | 120 | +    Write-Host "`n--- PATRONI packages downloaded ---" -ForegroundColor green  | 
 | 121 | +}  | 
 | 122 | + | 
 | 123 | +function Get-WinSW {  | 
 | 124 | +    Write-Host "`n--- Download WINSW ---" -ForegroundColor blue  | 
 | 125 | +    Invoke-WebRequest -Uri $WINSW_REF -OutFile "$MD\patroni\patroni_service.exe"  | 
 | 126 | +    Copy-Item "src\patroni_service.xml" "$MD\patroni"  | 
 | 127 | +    Copy-Item "$MD\patroni\patroni_service.exe" "$MD\etcd\etcd_service.exe" -Force  | 
 | 128 | +    Copy-Item "src\etcd_service.xml" "$MD\etcd"  | 
 | 129 | +    Copy-Item "$MD\patroni\patroni_service.exe" "$MD\vip-manager\vip_service.exe" -Force  | 
 | 130 | +    Copy-Item "src\vip_service.xml" "$MD\vip-manager"  | 
 | 131 | +    Write-Host "`n--- WINSW downloaded ---" -ForegroundColor green  | 
 | 132 | +}  | 
 | 133 | + | 
 | 134 | +function Export-Assets {  | 
 | 135 | +    Write-Host "`n--- Prepare archive ---" -ForegroundColor blue  | 
 | 136 | +    Compress-ToZipFile "$MD" "$MD.zip"   | 
 | 137 | +    Write-Host "`n--- Archive compressed ---" -ForegroundColor green  | 
 | 138 | +}  | 
0 commit comments