Skip to content

Commit 66a730f

Browse files
committed
Fix publishing docs for scala3 libraries
1 parent 1dc4894 commit 66a730f

File tree

5 files changed

+100
-74
lines changed

5 files changed

+100
-74
lines changed

build.sbt

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ val `scala3-interfaces` = Build.`scala3-interfaces`
44
val `scala3-compiler` = Build.`scala3-compiler`
55
val `scala3-compiler-bootstrapped` = Build.`scala3-compiler-bootstrapped`
66
val `scala3-library` = Build.`scala3-library`
7+
val `scala3-library-js` = Build.`scala3-library-js`
78
val `scala3-library-bootstrapped` = Build.`scala3-library-bootstrapped`
89
val `scala3-library-bootstrappedJS` = Build.`scala3-library-bootstrappedJS`
910
val `scala3-sbt-bridge` = Build.`scala3-sbt-bridge`
@@ -22,7 +23,9 @@ val `tasty-core-scala2` = Build.`tasty-core-scala2`
2223
val scaladoc = Build.scaladoc
2324
val `scaladoc-nonBootstrapped` = Build.`scaladoc-nonBootstrapped`
2425
val `scaladoc-testcases` = Build.`scaladoc-testcases`
26+
val `scaladoc-testcases-nonBootstrapped` = Build.`scaladoc-testcases-nonBootstrapped`
2527
val `scaladoc-js` = Build.`scaladoc-js`
28+
val `scaladoc-js-nonBootstrapped` = Build.`scaladoc-js-nonBootstrapped`
2629
val `scala3-bench-run` = Build.`scala3-bench-run`
2730
val dist = Build.dist
2831
val `community-build` = Build.`community-build`

compiler/src/dotty/tools/dotc/config/ScalaSettings.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@ trait CommonScalaSettings { self: Settings.SettingGroup =>
2828
val help: Setting[Boolean] = BooleanSetting("-help", "Print a synopsis of standard options.", aliases = List("--help"))
2929
val pageWidth: Setting[Int] = IntSetting("-pagewidth", "Set page width", 80, aliases = List("--page-width"))
3030
val silentWarnings: Setting[Boolean] = BooleanSetting("-nowarn", "Silence all warnings.", aliases = List("--no-warnings"))
31+
val fromTasty: Setting[Boolean] = BooleanSetting("-from-tasty", "Accept only sources from tasty files. The arguments are .tasty or .jar files.", aliases = List("--from-tasty"))
3132

3233
/** Other settings */
3334
val encoding: Setting[String] = StringSetting("-encoding", "encoding", "Specify character encoding used by source files.", Properties.sourceEncoding, aliases = List("--encoding"))
@@ -101,7 +102,6 @@ class ScalaSettings extends Settings.SettingGroup with CommonScalaSettings {
101102
val uniqid: Setting[Boolean] = BooleanSetting("-uniqid", "Uniquely tag all identifiers in debugging output.", aliases = List("--unique-id"))
102103
val language: Setting[List[String]] = MultiStringSetting("-language", "feature", "Enable one or more language features.", aliases = List("--language"))
103104
val rewrite: Setting[Option[Rewrites]] = OptionSetting[Rewrites]("-rewrite", "When used in conjunction with a `...-migration` source version, rewrites sources to migrate to new version.", aliases = List("--rewrite"))
104-
val fromTasty: Setting[Boolean] = BooleanSetting("-from-tasty", "Compile classes from tasty files. The arguments are .tasty or .jar files.", aliases = List("--from-tasty"))
105105

106106
val newSyntax: Setting[Boolean] = BooleanSetting("-new-syntax", "Require `then` and `do` in control expressions.")
107107
val oldSyntax: Setting[Boolean] = BooleanSetting("-old-syntax", "Require `(...)` around conditions.")

project/Build.scala

Lines changed: 95 additions & 69 deletions
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,13 @@ import scala.util.Properties.isJavaAtLeast
3030

3131
import org.portablescala.sbtplatformdeps.PlatformDepsPlugin.autoImport._
3232

33-
object MyScalaJSPlugin extends AutoPlugin {
33+
abstract class DottyJSPlugin(settings: Seq[Setting[_]]) extends AutoPlugin {
3434
import Build._
3535

3636
override def requires: Plugins = ScalaJSPlugin
3737

3838
override def projectSettings: Seq[Setting[_]] = Def.settings(
39-
commonBootstrappedSettings,
39+
settings,
4040

4141
// Replace the JVM JUnit dependency by the Scala.js one
4242
libraryDependencies ~= {
@@ -53,6 +53,8 @@ object MyScalaJSPlugin extends AutoPlugin {
5353
excludeFromIDE := true
5454
)
5555
}
56+
object BootstrappedDottyJSPlugin extends DottyJSPlugin(Build.commonBootstrappedSettings)
57+
object NonBootstrappedDottyJSPlugin extends DottyJSPlugin(Build.commonNonBootstrappedSettings)
5658

5759
object Build {
5860
val referenceVersion = "3.0.0-RC1"
@@ -341,9 +343,7 @@ object Build {
341343
)
342344
},
343345
// sbt-dotty defines `scalaInstance in doc` so we need to override it manually
344-
scalaInstance in doc := scalaInstance.value,
345-
346-
disableDocSetting,
346+
scalaInstance in doc := scalaInstance.value
347347
)
348348

349349
lazy val commonBenchmarkSettings = Seq(
@@ -688,6 +688,16 @@ object Build {
688688
case Bootstrapped => `scala3-library-bootstrapped`
689689
}
690690

691+
lazy val `scala3-library-js`: Project = project.in(file("library-js")).
692+
asDottyLibrary(NonBootstrapped).
693+
enablePlugins(NonBootstrappedDottyJSPlugin).
694+
settings(
695+
libraryDependencies +=
696+
("org.scala-js" %% "scalajs-library" % scalaJSVersion).withDottyCompat(scalaVersion.value),
697+
unmanagedSourceDirectories in Compile :=
698+
(unmanagedSourceDirectories in (`scala3-library`, Compile)).value
699+
)
700+
691701
/** The dotty standard library compiled with the Scala.js back-end, to produce
692702
* the corresponding .sjsir files.
693703
*
@@ -699,7 +709,7 @@ object Build {
699709
*/
700710
lazy val `scala3-library-bootstrappedJS`: Project = project.in(file("library-js")).
701711
asDottyLibrary(Bootstrapped).
702-
enablePlugins(MyScalaJSPlugin).
712+
enablePlugins(BootstrappedDottyJSPlugin).
703713
settings(
704714
libraryDependencies +=
705715
("org.scala-js" %% "scalajs-library" % scalaJSVersion).withDottyCompat(scalaVersion.value),
@@ -979,7 +989,7 @@ object Build {
979989
* useful, as that would not provide the linker and JS runners.
980990
*/
981991
lazy val sjsSandbox = project.in(file("sandbox/scalajs")).
982-
enablePlugins(MyScalaJSPlugin).
992+
enablePlugins(BootstrappedDottyJSPlugin).
983993
dependsOn(`scala3-library-bootstrappedJS`).
984994
settings(
985995
// Required to run Scala.js tests.
@@ -996,7 +1006,7 @@ object Build {
9961006
* It will grow in the future, as more stuff is confirmed to be supported.
9971007
*/
9981008
lazy val sjsJUnitTests = project.in(file("tests/sjs-junit")).
999-
enablePlugins(MyScalaJSPlugin).
1009+
enablePlugins(BootstrappedDottyJSPlugin).
10001010
dependsOn(`scala3-library-bootstrappedJS`).
10011011
settings(
10021012
scalacOptions --= Seq("-Xfatal-warnings", "-deprecation"),
@@ -1054,7 +1064,7 @@ object Build {
10541064
(sourceManaged in Compile).value,
10551065
"org.scalajs.testsuite.utils.BuildInfo",
10561066
"scalaVersion" -> scalaVersion.value,
1057-
"hasSourceMaps" -> false, //MyScalaJSPlugin.wantSourceMaps.value,
1067+
"hasSourceMaps" -> false, //BootstrappedDottyJSPlugin.wantSourceMaps.value,
10581068
"isNoModule" -> (moduleKind == ModuleKind.NoModule),
10591069
"isESModule" -> (moduleKind == ModuleKind.ESModule),
10601070
"isCommonJSModule" -> (moduleKind == ModuleKind.CommonJSModule),
@@ -1174,9 +1184,21 @@ object Build {
11741184
case Bootstrapped => scaladoc
11751185
}
11761186

1177-
lazy val `scaladoc-testcases` = project.in(file("scaladoc-testcases")).asScaladocTestcases
1187+
lazy val `scaladoc-testcases` = project.in(file("scaladoc-testcases")).asScaladocTestcases(Bootstrapped)
1188+
lazy val `scaladoc-testcases-nonBootstrapped` = project.in(file("scaladoc-testcases")).asScaladocTestcases(NonBootstrapped)
11781189

1179-
lazy val `scaladoc-js` = project.in(file("scaladoc-js")).asScaladocJs
1190+
def scalaDocTestcases(implicit mode: Mode): Project = mode match {
1191+
case NonBootstrapped => `scaladoc-testcases-nonBootstrapped`
1192+
case Bootstrapped => `scaladoc-testcases`
1193+
}
1194+
1195+
lazy val `scaladoc-js` = project.in(file("scaladoc-js")).asScaladocJs(Bootstrapped)
1196+
lazy val `scaladoc-js-nonBootstrapped` = project.in(file("scaladoc-js")).asScaladocJs(NonBootstrapped)
1197+
1198+
def scalaDocJs(implicit mode: Mode): Project = mode match {
1199+
case NonBootstrapped => `scaladoc-js-nonBootstrapped`
1200+
case Bootstrapped => `scaladoc-js`
1201+
}
11801202

11811203
// sbt plugin to use Dotty in your own build, see
11821204
// https://github.com/lampepfl/scala3-example-project for usage.
@@ -1510,42 +1532,53 @@ object Build {
15101532
settings(commonBenchmarkSettings).
15111533
enablePlugins(JmhPlugin)
15121534

1513-
def scaladocBasic(mode: Mode): Project = {
1535+
def scaladocBasic(implicit mode: Mode): Project = {
15141536
val flexmarkVersion = "0.42.12"
15151537

1516-
val base = if(mode == Bootstrapped)
1517-
project.settings(commonBootstrappedSettings).
1518-
dependsOn(`scala3-compiler-bootstrapped`).
1519-
dependsOn(`scala3-tasty-inspector`)
1520-
else
1521-
project.settings(commonNonBootstrappedSettings).
1522-
dependsOn(`scala3-compiler`).
1523-
dependsOn(`scala3-tasty-inspector-nonbootstrapped`)
1524-
1525-
base.settings(
1526-
libraryDependencies ++= Seq(
1527-
"com.vladsch.flexmark" % "flexmark" % flexmarkVersion,
1528-
"com.vladsch.flexmark" % "flexmark-html-parser" % flexmarkVersion,
1529-
"com.vladsch.flexmark" % "flexmark-ext-anchorlink" % flexmarkVersion,
1530-
"com.vladsch.flexmark" % "flexmark-ext-autolink" % flexmarkVersion,
1531-
"com.vladsch.flexmark" % "flexmark-ext-emoji" % flexmarkVersion,
1532-
"com.vladsch.flexmark" % "flexmark-ext-gfm-strikethrough" % flexmarkVersion,
1533-
"com.vladsch.flexmark" % "flexmark-ext-gfm-tables" % flexmarkVersion,
1534-
"com.vladsch.flexmark" % "flexmark-ext-gfm-tasklist" % flexmarkVersion,
1535-
"com.vladsch.flexmark" % "flexmark-ext-wikilink" % flexmarkVersion,
1536-
"com.vladsch.flexmark" % "flexmark-ext-yaml-front-matter" % flexmarkVersion,
1537-
"nl.big-o" % "liqp" % "0.6.7",
1538-
"org.jsoup" % "jsoup" % "1.13.1", // Needed to process .html files for static site
1539-
Dependencies.`jackson-dataformat-yaml`,
1540-
1541-
"com.novocode" % "junit-interface" % "0.11" % "test",
1542-
),
1543-
Compile / mainClass := Some("dotty.tools.scaladoc.Main"),
1544-
Compile / buildInfoKeys := Seq[BuildInfoKey](version),
1545-
Compile / buildInfoPackage := "dotty.tools.scaladoc",
1546-
BuildInfoPlugin.buildInfoScopedSettings(Compile),
1547-
BuildInfoPlugin.buildInfoDefaultSettings,
1548-
)
1538+
val base = if (mode == Bootstrapped)
1539+
project.settings(commonBootstrappedSettings)
1540+
.dependsOn(`scala3-compiler-bootstrapped`)
1541+
.dependsOn(`scala3-tasty-inspector`)
1542+
else
1543+
project.settings(commonNonBootstrappedSettings)
1544+
.dependsOn(`scala3-compiler`)
1545+
.dependsOn(`scala3-tasty-inspector-nonbootstrapped`)
1546+
1547+
base.settings(
1548+
Compile / resourceGenerators += Def.task {
1549+
val jsDestinationFile = (Compile / resourceManaged).value / "dotty_res" / "scripts" / "searchbar.js"
1550+
sbt.IO.copyFile((fullOptJS in Compile in scalaDocJs).value.data, jsDestinationFile)
1551+
Seq(jsDestinationFile)
1552+
}.taskValue,
1553+
Compile / resourceGenerators += Def.task {
1554+
val cssDesitnationFile = (Compile / resourceManaged).value / "dotty_res" / "styles" / "scaladoc-searchbar.css"
1555+
val cssSourceFile = (resourceDirectory in Compile in scalaDocJs).value / "scaladoc-searchbar.css"
1556+
sbt.IO.copyFile(cssSourceFile, cssDesitnationFile)
1557+
Seq(cssDesitnationFile)
1558+
}.taskValue,
1559+
libraryDependencies ++= Seq(
1560+
"com.vladsch.flexmark" % "flexmark" % flexmarkVersion,
1561+
"com.vladsch.flexmark" % "flexmark-html-parser" % flexmarkVersion,
1562+
"com.vladsch.flexmark" % "flexmark-ext-anchorlink" % flexmarkVersion,
1563+
"com.vladsch.flexmark" % "flexmark-ext-autolink" % flexmarkVersion,
1564+
"com.vladsch.flexmark" % "flexmark-ext-emoji" % flexmarkVersion,
1565+
"com.vladsch.flexmark" % "flexmark-ext-gfm-strikethrough" % flexmarkVersion,
1566+
"com.vladsch.flexmark" % "flexmark-ext-gfm-tables" % flexmarkVersion,
1567+
"com.vladsch.flexmark" % "flexmark-ext-gfm-tasklist" % flexmarkVersion,
1568+
"com.vladsch.flexmark" % "flexmark-ext-wikilink" % flexmarkVersion,
1569+
"com.vladsch.flexmark" % "flexmark-ext-yaml-front-matter" % flexmarkVersion,
1570+
"nl.big-o" % "liqp" % "0.6.7",
1571+
"org.jsoup" % "jsoup" % "1.13.1", // Needed to process .html files for static site
1572+
Dependencies.`jackson-dataformat-yaml`,
1573+
1574+
"com.novocode" % "junit-interface" % "0.11" % "test",
1575+
),
1576+
Compile / mainClass := Some("dotty.tools.scaladoc.Main"),
1577+
Compile / buildInfoKeys := Seq[BuildInfoKey](version),
1578+
Compile / buildInfoPackage := "dotty.tools.scaladoc",
1579+
BuildInfoPlugin.buildInfoScopedSettings(Compile),
1580+
BuildInfoPlugin.buildInfoDefaultSettings,
1581+
)
15491582
}
15501583

15511584
def asScaladoc: Project = {
@@ -1652,36 +1685,29 @@ object Build {
16521685
Build.testcasesSourceRoot.in(Test),
16531686
Build.testDocumentationRoot,
16541687
),
1655-
Compile / resourceGenerators += Def.task {
1656-
val jsDestinationFile = (Compile / resourceManaged).value / "dotty_res" / "scripts" / "searchbar.js"
1657-
sbt.IO.copyFile((fullOptJS in Compile in `scaladoc-js`).value.data, jsDestinationFile)
1658-
Seq(jsDestinationFile)
1659-
}.taskValue,
1660-
Compile / resourceGenerators += Def.task {
1661-
val cssDesitnationFile = (Compile / resourceManaged).value / "dotty_res" / "styles" / "scaladoc-searchbar.css"
1662-
val cssSourceFile = (resourceDirectory in Compile in `scaladoc-js`).value / "scaladoc-searchbar.css"
1663-
sbt.IO.copyFile(cssSourceFile, cssDesitnationFile)
1664-
Seq(cssDesitnationFile)
1665-
}.taskValue,
16661688
testDocumentationRoot := (baseDirectory.value / "test-documentations").getAbsolutePath,
16671689
buildInfoPackage in Test := "dotty.tools.scaladoc.test",
16681690
BuildInfoPlugin.buildInfoScopedSettings(Test),
16691691
)
16701692
}
16711693

1672-
def asScaladocTestcases: Project =
1673-
project.dependsOn(`scala3-compiler-bootstrapped`).settings(commonBootstrappedSettings)
1674-
1675-
def asScaladocJs: Project =
1676-
project.
1677-
enablePlugins(MyScalaJSPlugin).
1678-
dependsOn(`scala3-library-bootstrappedJS`).
1679-
settings(
1680-
fork in Test := false,
1681-
scalaJSUseMainModuleInitializer := true,
1682-
libraryDependencies += ("org.scala-js" %%% "scalajs-dom" % "1.1.0").withDottyCompat(scalaVersion.value)
1683-
)
1684-
1694+
def asScaladocTestcases(implicit mode: Mode): Project =
1695+
if (mode == Bootstrapped)
1696+
project.dependsOn(`scala3-compiler-bootstrapped`).settings(commonBootstrappedSettings)
1697+
else
1698+
project.dependsOn(`scala3-compiler`).settings(commonNonBootstrappedSettings)
1699+
1700+
def asScaladocJs(implicit mode: Mode): Project = {
1701+
val pr = if (mode == Bootstrapped)
1702+
project.enablePlugins(BootstrappedDottyJSPlugin).dependsOn(`scala3-library-bootstrappedJS`)
1703+
else
1704+
project.enablePlugins(NonBootstrappedDottyJSPlugin).dependsOn(`scala3-library-js`)
1705+
pr.settings(
1706+
fork in Test := false,
1707+
scalaJSUseMainModuleInitializer := true,
1708+
libraryDependencies += ("org.scala-js" %%% "scalajs-dom" % "1.1.0").withDottyCompat(scalaVersion.value)
1709+
)
1710+
}
16851711

16861712
def asDist(implicit mode: Mode): Project = project.
16871713
enablePlugins(PackPlugin).

sbt-dotty/src/dotty/tools/sbtplugin/DottyPlugin.scala

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -463,7 +463,7 @@ object DottyPlugin extends AutoPlugin {
463463
Def.task { tastyFiles.value }
464464
else Def.task { originalSources }
465465
}.value,
466-
scalacOptions ++= {
466+
scalacOptions := {
467467
if (isDotty.value) {
468468
val projectName =
469469
if (configuration.value == Compile)

scaladoc/src/dotty/tools/scaladoc/Scaladoc.scala

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -95,9 +95,6 @@ object Scaladoc:
9595

9696
allSettings.filterNot(scaladocSpecificSettings.contains).foreach(setInGlobal)
9797

98-
summary.warnings.foreach(report.warning(_))
99-
summary.errors.foreach(report.error(_))
100-
10198
def parseTastyRoots(roots: String) =
10299
roots.split(File.pathSeparatorChar).toList.map(new File(_))
103100

0 commit comments

Comments
 (0)