ModuleBuilder icon indicating copy to clipboard operation
ModuleBuilder copied to clipboard

Feature: Support SemVer 2.0 Informational Version

Open Jaykul opened this issue 3 years ago • 1 comments
trafficstars

Currently Build-Module supports passing an informational version to -SemVer and it splits it into:

ModuleVersion=Major.Minor.Patch
PrivateData.PSData.Prerelease=PreReleaseTagWithoutDash

and also puts the whole thing into the release notes.

We love that, but are trying to adopt GitVersion and the SemVer 2.0 version numbers for everything else.

Unfortunately, although PowerShell is ok with that, PowerShellGet is not: you can't publish the module:

The Prerelease string 'PullRequest17887.2' contains invalid characters. 
Please ensure that only characters 'a-zA-Z0-9' and possibly hyphen ('-') at the beginning are in the Prerelease string.

Note that hyphens aren't really allowed -- they're just willing to ignore ONE at the beginning of the string.

Could you take any valid SemVer 2 version number, like say 1.2.3-beta.4 or 1.2.3-pre-release.2+build24 and:

  1. strip the non-alphanumeric digits that PowerShellGet won't accept
  2. zero-pad the number at the end (maybe default to 4 digits?)

Jaykul avatar Nov 22 '21 23:11 Jaykul

Note: there's also a length limit to pre-release strings in nuget 2 -- or is that in PSGet/PowerShell Gallery? Actually, it doesn't matter. The point is that we might need this to be truncated to work, and I'm not sure what I think should happen in that case.

Jaykul avatar Nov 22 '21 23:11 Jaykul