Skip to content

Commit 590dfc7

Browse files
authored
Merge pull request #335 from armanbilge/issue/319
Add `/api` path to site that forwards to API url
2 parents e161758 + 0e3a2de commit 590dfc7

File tree

2 files changed

+26
-3
lines changed

2 files changed

+26
-3
lines changed

site/src/main/scala/org/typelevel/sbt/TypelevelSitePlugin.scala

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -120,7 +120,8 @@ object TypelevelSitePlugin extends AutoPlugin {
120120
tlSiteHeliumExtensions := TypelevelHeliumExtensions(
121121
licenses.value.headOption,
122122
tlSiteRelatedProjects.value,
123-
tlIsScala3.value
123+
tlIsScala3.value,
124+
tlSiteApiUrl.value
124125
),
125126
tlSiteApiUrl := {
126127
val javadocioUrl = for {

site/src/main/scala/org/typelevel/sbt/site/TypelevelHeliumExtensions.scala

Lines changed: 24 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,22 +33,32 @@ import java.net.URL
3333

3434
object TypelevelHeliumExtensions {
3535

36-
@deprecated("Use overload with scala3 parameter", "0.4.7")
36+
@deprecated("Use overload with API url and scala3 parameter", "0.4.7")
3737
def apply(license: Option[(String, URL)], related: Seq[(String, URL)]): ThemeProvider =
3838
apply(license, related, false)
3939

40+
@deprecated("Use overload with API url and scala3 parameter", "0.4.13")
41+
def apply(
42+
license: Option[(String, URL)],
43+
related: Seq[(String, URL)],
44+
scala3: Boolean): ThemeProvider =
45+
apply(license, related, false, None)
46+
4047
/**
4148
* @param license
4249
* name and [[java.net.URL]] of project license
4350
* @param related
4451
* name and [[java.net.URL]] of related projects
4552
* @param scala3
4653
* whether to use Scala 3 syntax highlighting
54+
* @param apiUrl
55+
* url to API docs
4756
*/
4857
def apply(
4958
license: Option[(String, URL)],
5059
related: Seq[(String, URL)],
51-
scala3: Boolean
60+
scala3: Boolean,
61+
apiUrl: Option[URL]
5262
): ThemeProvider = new ThemeProvider {
5363
def build[F[_]](implicit F: Sync[F]): Resource[F, Theme[F]] =
5464
ThemeBuilder[F]("Typelevel Helium Extensions")
@@ -62,6 +72,11 @@ object TypelevelHeliumExtensions {
6272
F.blocking(getClass.getResourceAsStream("helium/site/styles.css")),
6373
Path.Root / "site" / "styles.css"
6474
)
75+
.merge(
76+
apiUrl.fold(InputTree[F]) { url =>
77+
InputTree[F].addString(htmlForwarder(url), Path.Root / "api" / "index.html")
78+
}
79+
)
6580
)
6681
.addExtensions(
6782
GitHubFlavor,
@@ -93,4 +108,11 @@ object TypelevelHeliumExtensions {
93108
})
94109
.build
95110

111+
private def htmlForwarder(to: URL) =
112+
s"""|<!DOCTYPE html>
113+
|<meta charset="utf-8">
114+
|<meta http-equiv="refresh" content="0; URL=$to">
115+
|<link rel="canonical" href="$to">
116+
|""".stripMargin
117+
96118
}

0 commit comments

Comments
 (0)