Modules/businessdev.ALbuild.Apps/Public/Get-BcVersionComponents.ps1
|
function Get-BcVersionComponents { <# .SYNOPSIS Splits a Business Central version into its components plus a 3-part SemVer form. .DESCRIPTION Pure helper (no I/O, unit-testable) used by the Stamp Build Version task to expose the version as individual pipeline variables. Missing lower components are normalised to 0 (a 2-part '1.2' yields Build 0, Revision 0). The 'Short' value (Major.Minor.Build) is a valid 3-part SemVer for feeds that reject a 4-part version - e.g. Azure Universal Packages, which require X.Y.Z. .PARAMETER Version The version to split (e.g. '1.2.588.26440'). Accepts anything [version] can parse. .OUTPUTS PSCustomObject: Major, Minor, Build, Revision (int) and Short (string 'Major.Minor.Build'). #> [Diagnostics.CodeAnalysis.SuppressMessageAttribute('PSUseSingularNouns', '', Justification = 'Returns the set of version components; the plural noun is intentional and clearer.')] [CmdletBinding()] [OutputType([PSCustomObject])] param( [Parameter(Mandatory)] [ValidateNotNullOrEmpty()] [version] $Version ) $major = $Version.Major $minor = $Version.Minor $build = [Math]::Max($Version.Build, 0) $revision = [Math]::Max($Version.Revision, 0) [PSCustomObject]@{ Major = $major Minor = $minor Build = $build Revision = $revision Short = '{0}.{1}.{2}' -f $major, $minor, $build } } |