build.ps1 (62 lines of code) (raw):

# Simple script to prepare Elastic.Console for publishing param( [string] [Parameter(Mandatory = $true)] $Version, [string] [Parameter()] $Prerelease = "", [string] [Parameter()] $ReleaseNotes, [System.Security.Cryptography.X509Certificates.X509Certificate2] [Parameter()] $Certificate ) function Log { param( [string] $Message ) $FormattedDate = (Get-Date).ToString("yyyy-MM-dd HH:mm:ss") $LogMessage = "[$FormattedDate] $Message" Write-Output $LogMessage } $manifest = "./Elastic.Console/Elastic.Console.psd1" Log "Updating $manifest" if (-not $ReleaseNotes) { $ReleaseNotes = "Update to version $Version" } $updates = @{ Path = $manifest ModuleVersion = $Version ReleaseNotes = $ReleaseNotes Prerelease = $Prerelease RequireLicenseAcceptance = $false } Update-ModuleManifest @updates $module = "./Elastic.Console/Elastic.Console.psm1" Log "Updating $module" (Get-Content $module) -replace 'Set-ElasticsearchVersion -Version "(.*?)"',"Set-ElasticsearchVersion -Version `"$Version`"" | Set-Content -Path $module Log "Creating autocompletion file for version $Version" Import-Module $manifest -Force Set-ElasticsearchVersion $Version Remove-Module Elastic.Console Log "Removing all files under ./Elastic.Console/specs except autocomplete.json for version $Version" Get-ChildItem ./Elastic.Console/specs/* | ForEach-Object { if ($_.Name -eq $Version) { $files = Get-ChildItem $_ | Where-Object { $_.Name -ne 'autocomplete.json' } $files | Remove-Item -Recurse -Force } else { Remove-Item $_ -Recurse -Force } } if ($Certificate) { Log "Signing $module with passed certificate $($cert.Subject)" Set-AuthenticodeSignature -FilePath $module -Certificate $Certificate Log "Checking signature" Get-AuthenticodeSignature -FilePath $module Log "Done. ready for publishing" } else { Log "Done. Scripts should be signed for publishing with a Code Signing Certificate" }