The SemVerPS PowerShell module offers the ability to work with Semantic Version utilizing the .net implementation from Max Hauser's SemVer repository. With this module, it is possible to:
- Work with Semantic Version as typed object leveraging or comparison operators
- Enhance object with a
NoteProperty
that contains a Semantic Version. - Filter and/or test above enhanced list of objects.
- This could be very useful if for example a list of items is retrieved where part of the name is a semantic version and we want to filter the list.
Basic usage with ConvertTo-SemVer
Use the ConvertTo-SemVer
to convert strings to semantic version objects. For example:
ConvertTo-SemVer -Version "1.0.0"
Major : 1 Minor : 0 Patch : 0 Prerelease : Build :
ConvertTo-SemVer -Version "1.0.1-alpha+1" -Strict
Major : 1 Minor : 0 Patch : 1 Prerelease : alpha Build : 1
Use the Test-SemVer
to test if a string or a semantic version is stable or prerelease. For example:
Test-SemVer -InputObject "1.0.0" #True Test-SemVer -InputObject "1.0.0" -Stable #True Test-SemVer -InputObject "1.0.0-alpha+1" -PreRelease alpha #True
Add semantic versioning member to existing objects
Often there is a need to attach a semantic version notation to an object or a list of objects. Use the Add-SemVerMember
to add a member where the semantic version value is derived either from an expression or a script block. By default the semantic version is add to a property named SemVer
but this can be changed by defining the Property
parameter. For example:
[pscustomobject]@{Name="example-1.0.0"}|Add-SemVerMember -Expression 'Name.Replace("example-","")' -PassThru [pscustomobject]@{Name="example-1.0.0"}|Add-SemVerMember -ScriptBlock {$_.Name.Replace("example-","")} -PassThru -Name "AnotherProperty"
Name SemVer ---- ------ example-1.0.0 1.0.0 Name AnotherProperty ---- --------------- example-1.0.0 1.0.0
As an extension of the Test-SemVer
, use the Limit-SemVer
to filter objects based on semantic version conditions. Each object can be in the form of a string, or a semantic version instance or an object that has been enhanced with Add-SemVerMember
. For example:
$versions=@( "1.0.0" "1.0.0-alpha+1" ) $versions|Limit-SemVer -Stable $versions|Limit-SemVer -Prerelease alpha
1.0.0 1.0.0-alpha+1
$objectsWithVersions=@( "example-1.0.0" "example-1.0.0-alpha+1" )|Foreach-Object { [pscustomobject]@{Name=$_}| Add-SemVerMember -Expression 'Name.Replace("example-","")' -PassThru } $objectsWithVersions $objectsWithVersions|Limit-SemVer -Stable $objectsWithVersions|Limit-SemVer -Prerelease alpha
Name SemVer ---- ------ example-1.0.0 1.0.0 Name SemVer ---- ------ example-1.0.0-alpha+1 1.0.0-alpha+1
Copied from my personal blog post
Top comments (0)