Skip to content

Commit

Permalink
Generate /stable redirect in docs (#45)
Browse files Browse the repository at this point in the history
Generate /stable redirect in docs
  • Loading branch information
ChristopherDavenport committed Jul 19, 2019
2 parents ccc3e01 + 0e953af commit 2ac3aeb
Showing 1 changed file with 27 additions and 1 deletion.
28 changes: 27 additions & 1 deletion build.sbt
Original file line number Diff line number Diff line change
@@ -1,3 +1,6 @@
import sbtrelease._
import com.typesafe.sbt.git.JGit

lazy val `http4s-jdk-http-client` = project.in(file("."))
.disablePlugins(MimaPlugin)
.settings(commonSettings, releaseSettings, skipOnPublishSettings)
Expand Down Expand Up @@ -221,13 +224,22 @@ lazy val docsSettings = {
),

generateNetlifyToml := {
val toml = s"""
var toml = s"""
|[[redirects]]
| from = "/*"
| to = "/latest/:splat"
| force = false
| status = 302
|""".stripMargin
latestStableVersion(baseDirectory.value).foreach { v =>
toml += s"""
|[[redirects]]
| from = "/stable/*"
| to = "/${v.string}/:splat"
| force = false
| status = 200
""".stripMargin
}
IO.write(target.value / "netlify.toml", toml)
},

Expand Down Expand Up @@ -287,4 +299,18 @@ def formatCrossScalaVersions(crossScalaVersions: List[String]): String = {
go(crossScalaVersions.map(CrossVersion.binaryScalaVersion))
}

def latestStableVersion(base: File): Option[Version] =
JGit(base).tags.collect {
case ref if ref.getName.startsWith("refs/tags/v") =>
Version(ref.getName.substring("refs/tags/v".size))
}.foldLeft(Option.empty[Version]) {
case (latest, Some(v)) if v.qualifier.isEmpty =>
def patch(v: Version) = v.subversions.drop(1).headOption.getOrElse(0)
import Ordering.Implicits._
implicit val versionOrdering: Ordering[Version] =
Ordering[Seq[Int]].on(v => v.major +: v.subversions)
Ordering[Option[Version]].max(latest, Option(v))
case (latest, _) => latest
}

addCommandAlias("validate", ";test ;mimaBinaryIssueFilters ;scalafmtCheckAll ;docs/makeSite")

0 comments on commit 2ac3aeb

Please sign in to comment.