diff --git a/Powershell Modules & NuGet Repo/Increment Manifest Version.ps1 b/Powershell Modules & NuGet Repo/Increment Manifest Version.ps1 new file mode 100644 index 0000000..eb7c38c --- /dev/null +++ b/Powershell Modules & NuGet Repo/Increment Manifest Version.ps1 @@ -0,0 +1,42 @@ +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" \ No newline at end of file