@@ -112,9 +112,30 @@ Target.create "PublishNuGet" (fun _ ->
112
112
)
113
113
)
114
114
115
- let anchor ( path : string ) =
115
+ let anchor ( path : string ) =
116
116
System.IO.Path.GetFullPath( Path.Combine(__ SOURCE_ DIRECTORY__, path))
117
117
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
+
118
139
Target.create " ValidateVersionBump" ( fun _ ->
119
140
let intendedVersion = Paket.PublicAPI.ParseSemVer release.NugetVersion
120
141
let lockfile = Paket.LockFile.LoadFrom " paket.lock"
@@ -126,9 +147,10 @@ Target.create "ValidateVersionBump" (fun _ ->
126
147
let ( computedVersion , computedMagnitude ) = SynVer.SurfaceArea.bump ( string oldVersion) oldSurfaceArea newSurfaceArea
127
148
let parsedComputedVersion = Paket.PublicAPI.ParseSemVer computedVersion
128
149
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 ->
132
154
failwithf """ Version bump invalid.
133
155
Version packaged was %A
134
156
Version computed due to API diffs was %A
@@ -169,7 +191,7 @@ open Fake.Core.TargetOperators
169
191
170
192
" Build"
171
193
==> " NuGet"
172
- // ==> "ValidateVersionBump"
194
+ ==> " ValidateVersionBump"
173
195
==> " PublishNuGet"
174
196
==> " Release"
175
197
0 commit comments