From 72fa824f36545c516295e854bc2d1d19ee550a7a Mon Sep 17 00:00:00 2001 From: Alexandre Archambault Date: Mon, 15 May 2017 15:32:51 +0200 Subject: [PATCH] Tweak tag step in sbt-release process --- project/Release.scala | 38 +++++++++++++++++++++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/project/Release.scala b/project/Release.scala index f648a9a73..beb6cd1d0 100644 --- a/project/Release.scala +++ b/project/Release.scala @@ -5,6 +5,7 @@ import java.util.regex.Pattern import com.typesafe.sbt.pgp.PgpKeys import sbt._ import sbt.Keys._ +import sbt.Package.ManifestAttributes import sbtrelease.ReleasePlugin.autoImport._ import sbtrelease.ReleasePlugin.autoImport.ReleaseTransformations._ @@ -257,6 +258,40 @@ object Release { } ) + val addReleaseToManifest = ReleaseStep { state => + + val (releaseVer, _) = state.get(ReleaseKeys.versions).getOrElse { + sys.error(s"${ReleaseKeys.versions.label} key not set") + } + + val tag = "v" + releaseVer + + reapply( + Seq( + // Tag will be one commit after the one with which the publish was really made, because of the commit + // updating scripts / plugins. + packageOptions += ManifestAttributes("Vcs-Release-Tag" -> tag) + ), + state + ) + } + + // tagRelease from sbt-release seem to use the next version (snapshot one typically) rather than the released one :/ + val reallyTagRelease = ReleaseStep { state => + + val (releaseVer, _) = state.get(ReleaseKeys.versions).getOrElse { + sys.error(s"${ReleaseKeys.versions.label} key not set") + } + + val sign = Project.extract(state).get(releaseVcsSign) + + val tag = "v" + releaseVer + + state.vcs.tag(tag, s"Releasing $tag", sign).!(state.log) + + state + } + val settings = Seq( releaseProcess := Seq[ReleaseStep]( @@ -268,6 +303,7 @@ object Release { saveInitialVersion, setReleaseVersion, commitReleaseVersion, + addReleaseToManifest, publishArtifacts, releaseStepCommand("sonatypeRelease"), updateScripts, @@ -277,7 +313,7 @@ object Release { stageReadme, updatePluginsSbt, commitUpdates, - tagRelease, + reallyTagRelease, setNextVersion, commitNextVersion, ReleaseStep(_.reload),