@@ -112,9 +112,30 @@ Target.create "PublishNuGet" (fun _ ->
112112 )
113113)
114114
115- let anchor ( path : string ) =
115+ let anchor ( path : string ) =
116116 System.IO.Path.GetFullPath( Path.Combine(__ SOURCE_ DIRECTORY__, path))
117117
118+ let bumpMajor ( semver : Paket.SemVerInfo ) =
119+ { semver with Major = semver.Major + 1 u
120+ Minor = 0 u
121+ Patch = 0 u }
122+
123+ let bumpMinor ( semver : Paket.SemVerInfo ) =
124+ { semver with Minor = semver.Minor + 1 u
125+ Patch = 0 u }
126+
127+ let bumpPatch ( semver : Paket.SemVerInfo ) =
128+ { semver with Patch = semver.Patch + 1 u }
129+
130+ let (| WithinRange | OutsideRange |) ( leftSemver , ( magnitude : SynVer.Version ), rightSemver ) =
131+ let allowedMin =
132+ match magnitude with
133+ | SynVer.Version.Major -> bumpMajor leftSemver
134+ | SynVer.Version.Minor -> bumpMinor leftSemver
135+ | SynVer.Version.Patch -> bumpPatch leftSemver
136+
137+ if rightSemver < allowedMin || rightSemver < leftSemver then OutsideRange else WithinRange
138+
118139Target.create " ValidateVersionBump" ( fun _ ->
119140 let intendedVersion = Paket.PublicAPI.ParseSemVer release.NugetVersion
120141 let lockfile = Paket.LockFile.LoadFrom " paket.lock"
@@ -126,9 +147,10 @@ Target.create "ValidateVersionBump" (fun _ ->
126147 let ( computedVersion , computedMagnitude ) = SynVer.SurfaceArea.bump ( string oldVersion) oldSurfaceArea newSurfaceArea
127148 let parsedComputedVersion = Paket.PublicAPI.ParseSemVer computedVersion
128149 let apiDiffs = SynVer.SurfaceArea.diff oldSurfaceArea newSurfaceArea |> String.concat " \n "
129- // todo: expand on this comparison based on the magnitudes
130- if parsedComputedVersion <> intendedVersion
131- then
150+ match oldVersion, computedMagnitude, intendedVersion with
151+ | WithinRange ->
152+ Trace.tracefn " Version %A is within the allowed range of %A from the prior version of %A " intendedVersion computedMagnitude oldVersion
153+ | OutsideRange ->
132154 failwithf """ Version bump invalid.
133155 Version packaged was %A
134156 Version computed due to API diffs was %A
@@ -169,7 +191,7 @@ open Fake.Core.TargetOperators
169191
170192" Build"
171193 ==> " NuGet"
172- // ==> "ValidateVersionBump"
194+ ==> " ValidateVersionBump"
173195 ==> " PublishNuGet"
174196 ==> " Release"
175197
0 commit comments