diff --git a/build.sbt b/build.sbt index c86f04d74..9b52ae716 100644 --- a/build.sbt +++ b/build.sbt @@ -1,6 +1,8 @@ +import sbt.librarymanagement.CrossVersion import scala.collection.mutable def scala212 = "2.12.13" +def scala212Legacy = "2.12.12" def scala211 = "2.11.12" def scala213 = "2.13.4" def scala3 = List("3.0.0-M3", "3.0.0-M2") @@ -36,6 +38,8 @@ def multiScalaDirectories(projectName: String) = partialVersion.collect { case (major, minor) => result += base / s"scala-$major.$minor" } + + result += base / s"scala-${scalaVersion.value}" if (isScala3.value) { result += base / "scala-3" } @@ -64,7 +68,7 @@ def crossSetting[A]( inThisBuild( List( scalaVersion := scala212, - crossScalaVersions := List(scala212, scala211, scala213) ::: scala3, + crossScalaVersions := List(scala212, scala212Legacy, scala211, scala213) ::: scala3, organization := "org.scalameta", licenses := Seq( "Apache-2.0" -> url("http://www.apache.org/licenses/LICENSE-2.0") @@ -152,6 +156,7 @@ lazy val runtime = project sharedSettings, moduleName := "mdoc-runtime", unmanagedSourceDirectories.in(Compile) ++= multiScalaDirectories("runtime").value, + crossVersion := CrossVersion.full, libraryDependencies ++= crossSetting( scalaVersion.value, if2 = List( @@ -172,6 +177,7 @@ lazy val mdoc = project .settings( sharedSettings, unmanagedSourceDirectories.in(Compile) ++= multiScalaDirectories("mdoc").value, + crossVersion := CrossVersion.full, moduleName := "mdoc", mainClass in assembly := Some("mdoc.Main"), assemblyJarName in assembly := "mdoc.jar", @@ -329,6 +335,10 @@ lazy val plugin = project managedResourceDirectories.in(Compile).value.head / "sbt-mdoc.properties" val props = new java.util.Properties() props.put("version", version.value) + props.put("scala211", scala211) + props.put("scala212Legacy", scala212Legacy) + props.put("scala212", scala212) + props.put("scala213", scala213) IO.write(props, "sbt-mdoc properties", out) List(out) }, @@ -352,6 +362,7 @@ lazy val js = project .in(file("mdoc-js")) .settings( sharedSettings, + crossVersion := CrossVersion.full, crossScalaVersions --= scala3, moduleName := "mdoc-js", libraryDependencies ++= diff --git a/mdoc-sbt/src/main/scala/mdoc/BuildInfo.scala b/mdoc-sbt/src/main/scala/mdoc/BuildInfo.scala index 6408e3f3f..865008448 100644 --- a/mdoc-sbt/src/main/scala/mdoc/BuildInfo.scala +++ b/mdoc-sbt/src/main/scala/mdoc/BuildInfo.scala @@ -5,6 +5,10 @@ import java.util.Properties object BuildInfo { def version: String = props.getProperty("version", "0.8.0-SNAPSHOT") + def scala211: String = props.getProperty("scala211", "2.11.12") + def scala212: String = props.getProperty("scala212", "2.12.13") + def scala212Legacy: String = props.getProperty("scala212Legacy", "2.12.12") + def scala213: String = props.getProperty("scala213", "2.13.4") private lazy val props: Properties = { val props = new Properties() diff --git a/mdoc-sbt/src/main/scala/mdoc/MdocPlugin.scala b/mdoc-sbt/src/main/scala/mdoc/MdocPlugin.scala index 26333a5ad..0cc701ce9 100644 --- a/mdoc-sbt/src/main/scala/mdoc/MdocPlugin.scala +++ b/mdoc-sbt/src/main/scala/mdoc/MdocPlugin.scala @@ -66,6 +66,17 @@ object MdocPlugin extends AutoPlugin { } } + def findCompatibleScalaVersion(scalaV: String) = { + scalaV.split('.').take(3).map(_.toInt) match { + case Array(2, 11, _) => BuildInfo.scala211 + case Array(2, 12, minor) if minor <= 12 => BuildInfo.scala212Legacy + case Array(2, 12, _) => BuildInfo.scala212 + case Array(2, 13, _) => BuildInfo.scala213 + case other => + throw new RuntimeException(s"Expected a valid scala versions, but got ${other.toList}") + } + } + override def projectSettings: Seq[Def.Setting[_]] = List( mdocIn := baseDirectory.in(ThisBuild).value / "docs", @@ -91,7 +102,8 @@ object MdocPlugin extends AutoPlugin { val isJS = mdocJS.value.isDefined if (mdocAutoDependency.value) { val suffix = if (isJS) "-js" else "" - List("org.scalameta" %% s"mdoc$suffix" % BuildInfo.version) + val compatibleScalaVersion = findCompatibleScalaVersion(scalaVersion.value) + List("org.scalameta" % s"mdoc${suffix}_$compatibleScalaVersion" % BuildInfo.version) } else { List() } diff --git a/mdoc/src/main/scala-2.12.12/mdoc/internal/markdown/VersionSpecificFilteringReporter.scala b/mdoc/src/main/scala-2.12.12/mdoc/internal/markdown/VersionSpecificFilteringReporter.scala new file mode 100644 index 000000000..76abcb14c --- /dev/null +++ b/mdoc/src/main/scala-2.12.12/mdoc/internal/markdown/VersionSpecificFilteringReporter.scala @@ -0,0 +1,11 @@ +package mdoc.internal.markdown + +import scala.tools.nsc.Settings +import scala.tools.nsc.reporters.AbstractReporter +import scala.reflect.internal.util.Position + +trait VersionSpecificFilteringReporter extends AbstractReporter { self: FilterStoreReporter => + override def display(pos: Position, msg: String, severity: Severity): Unit = + add(pos, msg, severity) + override def displayPrompt(): Unit = () +} diff --git a/mdoc/src/main/scala-2.12/mdoc/internal/markdown/VersionSpecificFilteringReporter.scala b/mdoc/src/main/scala-2.12.13/mdoc/internal/markdown/VersionSpecificFilteringReporter.scala similarity index 100% rename from mdoc/src/main/scala-2.12/mdoc/internal/markdown/VersionSpecificFilteringReporter.scala rename to mdoc/src/main/scala-2.12.13/mdoc/internal/markdown/VersionSpecificFilteringReporter.scala