PoshSemanticVersion.types.ps1xml

<?xml version="1.0" encoding="utf-8" ?>
<Types>
  <Type>
    <Name>PoshSemanticVersion</Name>
    <Members>
      <MemberSet>
        <Name>PSStandardMembers</Name>
        <Members>
          <PropertySet>
            <Name>DefaultDisplayPropertySet</Name>
            <ReferencedProperties>
              <Name>Major</Name>
              <Name>Minor</Name>
              <Name>Patch</Name>
              <Name>PreRelease</Name>
              <Name>Build</Name>
            </ReferencedProperties>
          </PropertySet>
        </Members>
      </MemberSet>
      <ScriptProperty>
        <Name>Major</Name>
        <GetScriptBlock>
            [OutputType([int])]
            param ()
            $this.GetMajor()
        </GetScriptBlock>
        <SetScriptBlock>
            param (
                [Parameter(Mandatory=$true)]
                [int]
                $Major
            )
 
            if ($Major -eq ($this.GetMajor() + 1)) {
                $this.Increment('Major')
            }
            else {
                $message = 'New value must be exactly 1 version higher than existing value.'
                throw (New-Object -TypeName System.ArgumentException -ArgumentList @($message))
            }
        </SetScriptBlock>
      </ScriptProperty>
      <ScriptProperty>
        <Name>Minor</Name>
        <GetScriptBlock>
            [OutputType([int])]
            param ()
            $this.GetMinor()
        </GetScriptBlock>
        <SetScriptBlock>
            param (
                [Parameter(Mandatory=$true)]
                [int]
                $Minor
            )
 
            if ($Minor -eq ($this.GetMinor() + 1)) {
                $this.Increment('Minor')
            }
            else {
                $message = 'New value must be exactly 1 version higher than existing value.'
                throw (New-Object -TypeName System.ArgumentException -ArgumentList @($message))
            }
        </SetScriptBlock>
      </ScriptProperty>
      <ScriptProperty>
        <Name>Patch</Name>
        <GetScriptBlock>
            [OutputType([int])]
            param ()
            $this.GetPatch()
        </GetScriptBlock>
        <SetScriptBlock>
            param (
                [Parameter(Mandatory=$true)]
                [int]
                $Patch
            )
 
            if ($Patch -eq ($this.GetPatch() + 1)) {
                $this.Increment('Patch')
            }
            else {
                $message = 'New value must be exactly 1 version higher than existing value.'
                throw (New-Object -TypeName System.ArgumentException -ArgumentList @($message))
            }
        </SetScriptBlock>
      </ScriptProperty>
      <ScriptProperty>
        <Name>PreRelease</Name>
        <GetScriptBlock>
            #.SYNOPSIS
            # Returns the PreRelease label
            #.DESCRIPTION
            # Returns the PreRelease label as either a string, or as an integer.
            [OutputType([string], [int])]
            param ()
 
            [int] $numericValue = 0
 
            if (@($this.GetPreRelease()).Length -eq 1 -and ([int]::TryParse(@($this.GetPreRelease())[0], [ref] $numericValue))) {
                $numericValue
            }
            else {
                [string]::Join('.', $this.GetPreRelease())
            }
        </GetScriptBlock>
        <SetScriptBlock>
            param (
                [Parameter(Mandatory=$true)]
                $PreRelease
            )
 
            if ($this.PreRelease -is [int] -and ($PreRelease -is [int]) -and ($PreRelease -eq ($this.PreRelease + 1))) {
                $this.Increment('PreRelease')
            }
            else {
                $this.Increment('PreRelease', $PreRelease)
            }
        </SetScriptBlock>
      </ScriptProperty>
      <ScriptProperty>
        <Name>Build</Name>
        <GetScriptBlock>
            #.SYNOPSIS
            # Returns the Build label
            #.DESCRIPTION
            # Returns the Build label as either a string, or as an integer.
            [OutputType([string], [int])]
            param ()
 
            [int] $numericValue = 0
 
            if (@($this.GetBuild()).Length -eq 1 -and ([int]::TryParse(@($this.GetBuild())[0], [ref] $numericValue))) {
                $numericValue
            }
            else {
                [string]::Join('.', $this.GetBuild())
            }
        </GetScriptBlock>
        <SetScriptBlock>
            param (
                [Parameter(Mandatory=$true)]
                $Build
            )
 
            if ($this.Build -is [int] -and ($Build -is [int]) -and ($Build -eq ($this.Build + 1))) {
                $this.Increment('Build')
            }
            else {
                $this.Increment('Build', $Build)
            }
        </SetScriptBlock>
      </ScriptProperty>
      <AliasProperty>
        <Name>PreReleaseLabel</Name>
        <ReferencedMemberName>PreRelease</ReferencedMemberName>
      </AliasProperty>
      <AliasProperty>
        <Name>BuildLabel</Name>
        <ReferencedMemberName>Build</ReferencedMemberName>
      </AliasProperty>
    </Members>
  </Type>
  <Type>
    <Name>PoshSemanticVersionComparison</Name>
    <Members>
      <MemberSet>
        <Name>PSStandardMembers</Name>
        <Members>
          <PropertySet>
            <Name>DefaultDisplayPropertySet</Name>
            <ReferencedProperties>
              <Name>ReferenceVersion</Name>
              <Name>Precedence</Name>
              <Name>DifferenceVersion</Name>
              <Name>IsCompatible</Name>
            </ReferencedProperties>
          </PropertySet>
        </Members>
      </MemberSet>
    </Members>
  </Type>
</Types>