Skip to content

Commit 28d15ca

Browse files
committed
Apply requested changes. Add static site for testcases. Fix minor bugs in scaladoc.
1 parent 3a7ef07 commit 28d15ca

20 files changed

+634
-69
lines changed

project/Build.scala

Lines changed: 19 additions & 67 deletions
Original file line numberDiff line numberDiff line change
@@ -341,7 +341,7 @@ object Build {
341341
"-project-footer", s"Copyright (c) 2002-$currentYear, LAMP/EPFL",
342342
"-author",
343343
"-groups",
344-
"-default-template", "doc-page"
344+
"-default-template", "static-site-main"
345345
) ++ extMap
346346
}
347347

@@ -1257,7 +1257,16 @@ object Build {
12571257
dependsOn(`scala3-compiler-bootstrapped`).
12581258
settings(commonBootstrappedSettings)
12591259

1260-
lazy val `scaladoc-js-common` = project.in(file("scaladoc-js/common")).
1260+
1261+
/**
1262+
* Collection of projects building targets for scaladoc, these are:
1263+
* - common - common module for javascript shared among html and markdown outpu
1264+
* - main - main target for default scaladoc producing html webpage
1265+
* - markdown - companion js for preprocessing features. Can be later used with some templating engine
1266+
* - contributors - not related project to any of forementioned modules. Used for presenting contributors for static site.
1267+
* Made as an indepented project to be scaladoc-agnostic.
1268+
*/
1269+
lazy val `scaladoc-js-common` = project.in(file("scaladoc-js/common")).
12611270
enablePlugins(DottyJSPlugin).
12621271
dependsOn(`scala3-library-bootstrappedJS`).
12631272
settings(libraryDependencies += ("org.scala-js" %%% "scalajs-dom" % "1.1.0").cross(CrossVersion.for3Use2_13))
@@ -1270,7 +1279,7 @@ object Build {
12701279
Test / fork := false
12711280
)
12721281

1273-
lazy val `scaladoc-js-markdown` = project.in(file("scaladoc-js/markdown")).
1282+
lazy val `scaladoc-js-markdown` = project.in(file("scaladoc-js/markdown")).
12741283
enablePlugins(DottyJSPlugin).
12751284
dependsOn(`scaladoc-js-common`).
12761285
settings(
@@ -1338,70 +1347,13 @@ object Build {
13381347
).
13391348
settings(
13401349
Compile / resourceGenerators += Def.task {
1341-
val contributorsFile = (`scaladoc-js-contributors` / Compile / fullOptJS).value.data
1342-
val contributorsDestinationFile = Paths.get("docs-for-dotty-page", "js", "contributors.js").toFile
1343-
sbt.IO.copyFile(contributorsFile, contributorsDestinationFile)
1344-
1345-
val mainFile = (`scaladoc-js-main` / Compile / fullOptJS).value.data
1346-
val mainDestinationFile = (Compile / resourceManaged).value / "dotty_res" / "scripts" / "scaladoc-scalajs.js"
1347-
sbt.IO.copyFile(mainFile, mainDestinationFile)
1348-
1349-
Seq(mainDestinationFile, contributorsDestinationFile)
1350-
}.taskValue,
1351-
Compile / resourceGenerators += Def.task {
1352-
{
1353-
val cssDesitnationFile = (Compile / resourceManaged).value / "dotty_res" / "styles" / "code-snippets.css"
1354-
val cssSourceFile = (`scaladoc-js-common` / Compile / resourceDirectory).value / "code-snippets.css"
1355-
sbt.IO.copyFile(cssSourceFile, cssDesitnationFile)
1356-
Seq(cssDesitnationFile)
1357-
} ++ {
1358-
val cssDesitnationFile = Paths.get("docs-for-dotty-page", "css", "content-contributors.css").toFile
1359-
val cssSourceFile = (`scaladoc-js-contributors` / Compile / resourceDirectory).value / "content-contributors.css"
1360-
sbt.IO.copyFile(cssSourceFile, cssDesitnationFile)
1361-
Seq(cssDesitnationFile)
1362-
} ++ Seq("searchbar.css", "social-links.css", "ux.css", "versions-dropdown.css").map { file =>
1363-
val cssDesitnationFile = (Compile / resourceManaged).value / "dotty_res" / "styles" / file
1364-
val cssSourceFile = (`scaladoc-js-main` / Compile / resourceDirectory).value / file
1365-
sbt.IO.copyFile(cssSourceFile, cssDesitnationFile)
1366-
cssDesitnationFile
1367-
}
1368-
}.taskValue,
1369-
Compile / resourceGenerators += Def.task {
1370-
import _root_.scala.sys.process._
1371-
import _root_.scala.concurrent._
1372-
import _root_.scala.concurrent.duration.Duration
1373-
import ExecutionContext.Implicits.global
1374-
val inkuireVersion = "1.0.0-M3"
1375-
val inkuireLink = s"https://github.com/VirtusLab/Inkuire/releases/download/$inkuireVersion/inkuire.js"
1376-
val inkuireDestinationFile = (Compile / resourceManaged).value / "dotty_res" / "scripts" / "inkuire.js"
1377-
sbt.IO.touch(inkuireDestinationFile)
1378-
1379-
def tryFetch(retries: Int, timeout: Duration): Unit = {
1380-
val downloadProcess = (new java.net.URL(inkuireLink) #> inkuireDestinationFile).run()
1381-
val result: Future[Int] = Future(blocking(downloadProcess.exitValue()))
1382-
try {
1383-
Await.result(result, timeout) match {
1384-
case 0 =>
1385-
case res if retries > 0 =>
1386-
println(s"Failed to fetch inkuire.js from $inkuireLink: Error code $res. $retries retries left")
1387-
tryFetch(retries - 1, timeout)
1388-
case res => throw new MessageOnlyException(s"Failed to fetch inkuire.js from $inkuireLink: Error code $res")
1389-
}
1390-
} catch {
1391-
case e: TimeoutException =>
1392-
downloadProcess.destroy()
1393-
if (retries > 0) {
1394-
println(s"Failed to fetch inkuire.js from $inkuireLink: Download timeout. $retries retries left")
1395-
tryFetch(retries - 1, timeout)
1396-
}
1397-
else {
1398-
throw new MessageOnlyException(s"Failed to fetch inkuire.js from $inkuireLink: Download timeout")
1399-
}
1400-
}
1401-
}
1402-
1403-
tryFetch(5, Duration(60, "s"))
1404-
Seq(inkuireDestinationFile)
1350+
DocumentationWebsite.generateStaticAssets(
1351+
(`scaladoc-js-contributors` / Compile / fullOptJS).value.data,
1352+
(`scaladoc-js-main` / Compile / fullOptJS).value.data,
1353+
(`scaladoc-js-contributors` / Compile / baseDirectory).value / "css",
1354+
(`scaladoc-js-common` / Compile / baseDirectory).value / "css",
1355+
(Compile / resourceManaged).value,
1356+
)
14051357
}.taskValue,
14061358
libraryDependencies ++= Dependencies.flexmarkDeps ++ Seq(
14071359
"nl.big-o" % "liqp" % "0.6.8",

project/DocumentationWebsite.scala

Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
import java.io.File
2+
import java.nio.file.Paths
3+
import sbt._
4+
import Build._
5+
6+
object DocumentationWebsite {
7+
def generateStaticAssets(
8+
contributorsFile: File,
9+
mainFile: File,
10+
cssContentContributorsSourceBaseFile: File,
11+
cssSourceFileBase: File,
12+
baseDest: File
13+
): Seq[File] = {
14+
15+
16+
val contributorsTestcasesDestinationFile = Paths.get("scaladoc-testcases", "docs", "js", "contributors.js").toFile
17+
val contributorsDestinationFile = Paths.get("docs-for-dotty-page", "js", "contributors.js").toFile
18+
sbt.IO.copyFile(contributorsFile, contributorsTestcasesDestinationFile)
19+
sbt.IO.copyFile(contributorsFile, contributorsDestinationFile)
20+
21+
val mainDestinationFile = baseDest / "dotty_res" / "scripts" / "scaladoc-scalajs.js"
22+
sbt.IO.copyFile(mainFile, mainDestinationFile)
23+
24+
val cssCodeSnippetsDesitnationFile = baseDest / "dotty_res" / "styles" / "code-snippets.css"
25+
val cssCodeSnippetsSourceFile = cssSourceFileBase / "code-snippets.css"
26+
sbt.IO.copyFile(cssCodeSnippetsSourceFile, cssCodeSnippetsDesitnationFile)
27+
28+
val cssContentContributorsTestcasesDesitnationFile = Paths.get("docs-for-dotty-page", "css", "content-contributors.css").toFile
29+
val cssContentContributorsDesitnationFile = Paths.get("scaladoc-testcases", "docs", "css", "content-contributors.css").toFile
30+
val cssContentContributorsSourceFile = cssContentContributorsSourceBaseFile / "content-contributors.css"
31+
sbt.IO.copyFile(cssContentContributorsSourceFile, cssContentContributorsTestcasesDesitnationFile)
32+
sbt.IO.copyFile(cssContentContributorsSourceFile, cssContentContributorsDesitnationFile)
33+
34+
val dests = Seq("searchbar.css", "social-links.css", "ux.css", "versions-dropdown.css").map { file =>
35+
val cssDesitnationFile = baseDest / "dotty_res" / "styles" / file
36+
val cssSourceFile = cssSourceFileBase / file
37+
sbt.IO.copyFile(cssSourceFile, cssDesitnationFile)
38+
cssDesitnationFile
39+
}
40+
41+
import _root_.scala.sys.process._
42+
import _root_.scala.concurrent._
43+
import _root_.scala.concurrent.duration.Duration
44+
import ExecutionContext.Implicits.global
45+
val inkuireVersion = "1.0.0-M3"
46+
val inkuireLink = s"https://github.com/VirtusLab/Inkuire/releases/download/$inkuireVersion/inkuire.js"
47+
val inkuireDestinationFile = baseDest / "dotty_res" / "scripts" / "inkuire.js"
48+
sbt.IO.touch(inkuireDestinationFile)
49+
50+
def tryFetch(retries: Int, timeout: Duration): Unit = {
51+
val downloadProcess = (new java.net.URL(inkuireLink) #> inkuireDestinationFile).run()
52+
val result: Future[Int] = Future(blocking(downloadProcess.exitValue()))
53+
try {
54+
Await.result(result, timeout) match {
55+
case 0 =>
56+
case res if retries > 0 =>
57+
println(s"Failed to fetch inkuire.js from $inkuireLink: Error code $res. $retries retries left")
58+
tryFetch(retries - 1, timeout)
59+
case res => throw new MessageOnlyException(s"Failed to fetch inkuire.js from $inkuireLink: Error code $res")
60+
}
61+
} catch {
62+
case e: TimeoutException =>
63+
downloadProcess.destroy()
64+
if (retries > 0) {
65+
println(s"Failed to fetch inkuire.js from $inkuireLink: Download timeout. $retries retries left")
66+
tryFetch(retries - 1, timeout)
67+
}
68+
else {
69+
throw new MessageOnlyException(s"Failed to fetch inkuire.js from $inkuireLink: Download timeout")
70+
}
71+
}
72+
}
73+
74+
tryFetch(5, Duration(60, "s"))
75+
Seq(
76+
inkuireDestinationFile,
77+
mainDestinationFile,
78+
contributorsDestinationFile,
79+
cssContentContributorsDesitnationFile,
80+
cssCodeSnippetsDesitnationFile,
81+
) ++ dests
82+
}
83+
}
84+
85+
File renamed without changes.
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
---
2+
hasFrame: false
3+
---
4+
<!DOCTYPE html>
5+
<html lang="en-US">
6+
<meta charset="utf-8">
7+
<title>Redirecting&hellip;</title>
8+
<link rel="canonical" href="{{ redirectTo }}">
9+
<script>location="{{ redirectTo }}"</script>
10+
<meta http-equiv="refresh" content="0; url={{ redirectTo }}">
11+
<meta name="robots" content="noindex">
12+
<h1>Redirecting&hellip;</h1>
13+
<a href="{{ redirectTo }}">Click here if you were not redirected.</a>
14+
</html>
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
---
2+
extraJS:
3+
- js/contributors.js
4+
extraCSS:
5+
- css/bootstrap.min.css
6+
- css/content-contributors.css
7+
---
8+
<div class="container">
9+
{{ content }}
10+
<nav class="arrows-wrapper" aria-label="Page navigation">
11+
{% if page.previous %}
12+
<a rel="prev" href="{{ page.previous }}" class="arrows previous" aria-keyshortcuts="Left">
13+
<i class="fa fa-angle-left"></i>
14+
</a>
15+
{% endif %}
16+
{% if page.next %}
17+
<a rel="next" href="{{ page.next }}" class="arrows next" aria-keyshortcuts="Right">
18+
<i class="fa fa-angle-right"></i>
19+
</a>
20+
{% endif %}
21+
</nav>
22+
</div>

scaladoc-testcases/docs/css/bootstrap.min.css

Lines changed: 1 addition & 0 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.
Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
.content-contributors.hidden {
2+
display: none;
3+
}
4+
.content-contributors .contributors-container {
5+
display: flex;
6+
flex-wrap: wrap;
7+
align-items: center;
8+
padding-bottom: 25px;
9+
}
10+
.content-contributors .contributors-container div {
11+
margin: 5px;
12+
}
13+
.content-contributors .contributors-container div a {
14+
vertical-align: middle;
15+
padding: 3px;
16+
text-decoration: none;
17+
}
18+
.content-contributors .contributors-container div img {
19+
vertical-align: middle;
20+
width: 35px;
21+
height: 35px;
22+
margin-bottom: 0;
23+
border-radius: 7px;
24+
}
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
---
2+
layout: static-site-main
3+
redirectFrom:
4+
- docs/fr.html
5+
- docs/my-custom-link
6+
---
7+
F1
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
---
2+
layout: static-site-main
3+
---
4+
F2
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
---
2+
layout: static-site-main
3+
---
4+
F3
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
---
2+
layout: static-site-main
3+
---
4+
F4

0 commit comments

Comments
 (0)