-
Notifications
You must be signed in to change notification settings - Fork 51
Add tlLatestVersion, tlLatestPreReleaseVersion to versioning plugin
#333
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 1 commit
bce0230
defe6b3
9572683
210a174
f23c6d2
085bdd1
c58d30b
4852218
4e2eb8e
91d747d
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -24,6 +24,7 @@ import sbt._ | |
|
|
||
| import scala.util.Try | ||
| import Keys._ | ||
bplommer marked this conversation as resolved.
Show resolved
Hide resolved
|
||
| import org.typelevel.sbt.TypelevelKernelPlugin.autoImport._ | ||
|
|
||
| object TypelevelVersioningPlugin extends AutoPlugin { | ||
|
|
||
|
|
@@ -37,36 +38,11 @@ object TypelevelVersioningPlugin extends AutoPlugin { | |
| settingKey[Boolean]( | ||
| "If true, an untagged commit is given a snapshot version, e.g. 0.4-00218f9-SNAPSHOT. If false, it is given a release version, e.g. 0.4-00218f9. (default: true)") | ||
|
|
||
| lazy val currentRelease = Def.setting { | ||
| // some tricky logic here ... | ||
| // if the latest release is a pre-release (e.g., M or RC) | ||
| // and there are no stable releases it is bincompatible with, | ||
| // then for all effective purposes it is the current release | ||
|
|
||
| val release = previousReleases.value match { | ||
| case head :: tail if head.isPrerelease => | ||
| tail | ||
| .filterNot(_.isPrerelease) | ||
| .find(head.copy(prerelease = None).mustBeBinCompatWith(_)) | ||
| .orElse(Some(head)) | ||
| case releases => releases.headOption | ||
| } | ||
|
|
||
| release.map(_.toString) | ||
| } | ||
| lazy val currentRelease = currentReleaseImpl | ||
|
|
||
| // latest tagged release, including pre-releases | ||
| lazy val currentPreRelease = Def.setting { | ||
| previousReleases.value.headOption.map(_.toString) | ||
| } | ||
|
|
||
| lazy val previousReleases = Def.setting { | ||
| val currentVersion = V(version.value).map(_.copy(prerelease = None)) | ||
| GitHelper.previousReleases(fromHead = true, strict = false).filter { v => | ||
| currentVersion.forall(v.copy(prerelease = None) <= _) | ||
| } | ||
| } | ||
| lazy val currentPreRelease = currentPreReleaseImpl | ||
|
||
|
|
||
| lazy val previousReleases = previousReleasesImpl | ||
| } | ||
|
|
||
| import autoImport._ | ||
|
|
||
Uh oh!
There was an error while loading. Please reload this page.