42 lines
1.3 KiB
PowerShell
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" |