Skip to content

Commit

Permalink
Add sbt-release plugin
Browse files Browse the repository at this point in the history
  • Loading branch information
kxbmap committed Oct 19, 2021
1 parent 14f7e7c commit eca4cc7
Show file tree
Hide file tree
Showing 4 changed files with 87 additions and 9 deletions.
10 changes: 2 additions & 8 deletions build.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,8 @@ name := "sbt-jooq"

publish / skip := true

enablePlugins(ReleaseSettings)

ThisBuild / scalacOptions ++= Seq(
"-release",
"8",
Expand Down Expand Up @@ -92,11 +94,3 @@ lazy val docs = project
"org.scala-lang.modules" %% "scala-xml" % "always"
),
)

TaskKey[Unit]("updateReadme") := Def.taskDyn {
val readmeFile = "README.md"
Def.sequential(
(docs / mdoc).toTask(s" --include $readmeFile"),
Def.task(IO.copyFile((docs / mdocOut).value / readmeFile, baseDirectory.value / readmeFile)),
)
}
7 changes: 6 additions & 1 deletion project/PublishSettings.scala
Original file line number Diff line number Diff line change
@@ -1,12 +1,16 @@
import com.jsuereth.sbtpgp.PgpKeys._
import com.jsuereth.sbtpgp.SbtPgp
import sbt._
import sbt.Keys._
import sbtrelease.ReleasePlugin
import sbtrelease.ReleasePlugin.autoImport._
import xerial.sbt.Sonatype
import xerial.sbt.Sonatype.GitHubHosting
import xerial.sbt.Sonatype.SonatypeKeys._

object PublishSettings extends AutoPlugin {

override def requires: Plugins = Sonatype
override def requires: Plugins = Sonatype && SbtPgp && ReleasePlugin

override def trigger: PluginTrigger = allRequirements

Expand All @@ -24,6 +28,7 @@ object PublishSettings extends AutoPlugin {
publishTo := sonatypePublishToBundle.value,
sonatypeProjectHosting := Some(GitHubHosting("kxbmap", "sbt-jooq", "Tsukasa Kitachi", "[email protected]")),
pomIncludeRepository := { _ => false },
releasePublishArtifactsAction := publishSigned.value,
)

}
78 changes: 78 additions & 0 deletions project/ReleaseSettings.scala
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
import com.jsuereth.sbtpgp.SbtPgp
import mdoc.MdocPlugin.autoImport._
import sbt._
import sbt.Def.Initialize
import sbt.Keys._
import sbtrelease.ReleasePlugin
import sbtrelease.ReleasePlugin.autoImport._
import sbtrelease.ReleaseStateTransformations._
import sbtrelease.Version.Bump
import xerial.sbt.Sonatype

object ReleaseSettings extends AutoPlugin {

override def requires: Plugins = Sonatype && ReleasePlugin && SbtPgp

object autoImport {
val readmeFile = settingKey[File]("Readme file name")
val updateReadme = taskKey[Unit]("Update readme file")
}

import autoImport._

override def projectSettings: Seq[Setting[_]] = Seq(
readmeFile := baseDirectory.value / "README.md",
updateReadme := updateReadmeTask.value,
releaseVersionBump := Bump.Bugfix,
releaseProcess := Seq(
checkSnapshotDependencies,
inquireVersions,
runClean,
runTest,
releaseStepCommand("scripted"),
setReleaseVersion,
releaseStepTask(updateReadme),
commitReadme,
commitReleaseVersion,
tagRelease,
publishArtifacts,
releaseStepCommand("sonatypeBundleRelease"),
setNextVersion,
commitNextVersion,
releaseStepCommand("reload"),
),
)

private val docs = LocalProject("docs")

private def updateReadmeTask: Initialize[Task[Unit]] =
Def.taskDyn {
val readme = readmeFile.value
val name = readme.getName
Def.sequential(
(docs / mdoc).toTask(s" --include $name"),
Def.task[Unit] {
val src = (docs / mdocOut).value / name
IO.copy(Seq(src -> readme))
},
)
}

private val commitReadme = ReleaseStep { st =>
val x = Project.extract(st)
val vcs = x.get(releaseVcs).getOrElse(
sys.error("Aborting release. Working directory is not a repository of a recognized VCS.")
)
val sign = x.get(releaseVcsSign)
val signOff = x.get(releaseVcsSignOff)
val readme = x.get(readmeFile)
val name = readme.getName
vcs.add(readme.getPath) ! st.log
val status = vcs.status.!!.trim
if (status.contains(name)) {
vcs.commit(s"Update $name", sign, signOff) ! st.log
}
st
}

}
1 change: 1 addition & 0 deletions project/plugins.sbt
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,7 @@ scalacOptions ++= Seq(
"-Xlint:-unused,_",
)

addSbtPlugin("com.github.sbt" % "sbt-release" % "1.1.0")
addSbtPlugin("org.xerial.sbt" % "sbt-sonatype" % "3.9.10")
addSbtPlugin("com.github.sbt" % "sbt-pgp" % "2.1.2")
addSbtPlugin("org.scalameta" % "sbt-mdoc" % "2.2.23")
Expand Down

0 comments on commit eca4cc7

Please sign in to comment.