Files
Powershell-Scripts/Powershell Modules & NuGet Repo/Increment Manifest Version.ps1
T

42 lines
1.3 KiB
PowerShell

function Update-Version {
[CmdletBinding()]
param(
[Parameter(Mandatory)]
[string]$Version,
# Which segment to increment: -1 = last (default), 0 = first, etc.
[int]$SegmentIndex = -1,
# Max value for non-major segments before rollover
[int]$SegmentMax = 9
)
$Parts = $Version.Split('.')
# negative index normalization trick
If ($SegmentIndex -lt 0) { $SegmentIndex = $Parts.Count + $SegmentIndex }
# Convert to integer
$Numbers = foreach ($Part in $Parts) { [int]$Part }
# Increment with carry; major (index 0) has no cap
$i = $SegmentIndex
while ($i -ge 0) {
$Numbers[$i]++
# Major segment: unlimited growth; stop carrying
if ($i -eq 0) { break }
if ($Numbers[$i] -le $SegmentMax) { break }
# rollover this non-major segment and carry left
$Numbers[$i] = 0
$i--
}
($Numbers -join '.')
}
$Current_Version = Get-Content ".\*.psd1" | Where-Object { $_ -like "ModuleVersion =*" }
$Version_Parts = $Current_Version -replace "[^\d*\.?\d*$/]" , ''
$New_Version = Update-Version -Version $Version_Parts
(Get-Content ".\*.psd1") -replace "$Current_Version", "ModuleVersion = '$New_Version'" | Set-Content ".\*.psd1"