diff --git a/.github/workflows/Process-PSModule.yml b/.github/workflows/Process-PSModule.yml index b14321b..2ace30f 100644 --- a/.github/workflows/Process-PSModule.yml +++ b/.github/workflows/Process-PSModule.yml @@ -24,3 +24,5 @@ jobs: Process-PSModule: uses: PSModule/Process-PSModule/.github/workflows/workflow.yml@v1 secrets: inherit + with: + SkipTests: true diff --git a/src/PSSemVer/PSSemVer.ps1 b/src/PSSemVer/PSSemVer.ps1 new file mode 100644 index 0000000..d0c1395 --- /dev/null +++ b/src/PSSemVer/PSSemVer.ps1 @@ -0,0 +1,36 @@ +# Define the types to export with type accelerators. +$ExportableTypes = @( + [PSSemVer] +) +# Get the internal TypeAccelerators class to use its static methods. +$TypeAcceleratorsClass = [psobject].Assembly.GetType( + 'System.Management.Automation.TypeAccelerators' +) +# Ensure none of the types would clobber an existing type accelerator. +# If a type accelerator with the same name exists, throw an exception. +$ExistingTypeAccelerators = $TypeAcceleratorsClass::Get +foreach ($Type in $ExportableTypes) { + if ($Type.FullName -in $ExistingTypeAccelerators.Keys) { + $Message = @( + "Unable to register type accelerator '$($Type.FullName)'" + 'Accelerator already exists.' + ) -join ' - ' + + throw [System.Management.Automation.ErrorRecord]::new( + [System.InvalidOperationException]::new($Message), + 'TypeAcceleratorAlreadyExists', + [System.Management.Automation.ErrorCategory]::InvalidOperation, + $Type.FullName + ) + } +} +# Add type accelerators for every exportable type. +foreach ($Type in $ExportableTypes) { + $TypeAcceleratorsClass::Add($Type.FullName, $Type) +} +# Remove type accelerators when the module is removed. +$MyInvocation.MyCommand.ScriptBlock.Module.OnRemove = { + foreach ($Type in $ExportableTypes) { + $TypeAcceleratorsClass::Remove($Type.FullName) + } +}.GetNewClosure() diff --git a/src/PSSemVer/PSSemVer.psd1 b/src/PSSemVer/PSSemVer.psd1 index 9bbe918..1112f76 100644 --- a/src/PSSemVer/PSSemVer.psd1 +++ b/src/PSSemVer/PSSemVer.psd1 @@ -1,3 +1,3 @@ @{ - ModuleVersion = '0.0.0' + ModuleVersion = '99.0.0' } diff --git a/src/PSSemVer/classes/PSSemVer.ps1 b/src/PSSemVer/classes/PSSemVer.ps1 index 691c417..026c7da 100644 --- a/src/PSSemVer/classes/PSSemVer.ps1 +++ b/src/PSSemVer/classes/PSSemVer.ps1 @@ -109,9 +109,9 @@ } PSSemVer([version]$version) { - $this.Major = $version.Major -lt 0 ? 0 : $version.Major - $this.Minor = $version.Minor -lt 0 ? 0 : $version.Minor - $this.Patch = $version.Build -lt 0 ? 0 : $version.Build + $this.Major = if ($version.Major -lt 0) { 0 } else { $version.Major } + $this.Minor = if ($version.Minor -lt 0) { 0 } else { $version.Minor } + $this.Patch = if ($version.Build -lt 0) { 0 } else { $version.Build } } #endregion Constructors diff --git a/src/PSSemVer/public/ConvertTo-PSSemVer.ps1 b/src/PSSemVer/public/ConvertTo-PSSemVer.ps1 index dbf8ad3..dce3084 100644 --- a/src/PSSemVer/public/ConvertTo-PSSemVer.ps1 +++ b/src/PSSemVer/public/ConvertTo-PSSemVer.ps1 @@ -32,7 +32,7 @@ [string] $Version ) - if ($Version | IsNullOrEmpty) { + if ([string]::IsNullOrEmpty($Version)) { return New-PSSemVer }