diff --git a/admin/build.sh b/admin/build.sh index bffec523..a1bef95f 100755 --- a/admin/build.sh +++ b/admin/build.sh @@ -19,14 +19,14 @@ set -e RELEASE_COMBO=true if [[ "$TEST_SCALAFIX" == "true" ]]; then - cd scalafix && sbt input/compile output/compile tests/test + sbt tests/test exit 0 fi if [ "$SCALAJS_VERSION" = "" ]; then - projectPrefix="scala-collection-compat" + projectPrefix="compat" else - projectPrefix="scala-collection-compatJS" + projectPrefix="compatJS" fi verPat="[0-9]+\.[0-9]+\.[0-9]+(-[A-Za-z0-9-]+)?" diff --git a/build.sbt b/build.sbt index bf43cc3d..01e131dd 100644 --- a/build.sbt +++ b/build.sbt @@ -1,28 +1,36 @@ -import sbtcrossproject.{crossProject, CrossType} import ScalaModulePlugin._ +import sbtcrossproject.{crossProject, CrossType} +import _root_.scalafix.Versions.{version => scalafixVersion, scala212 => scalafixScala212} + +lazy val scala212 = "2.12.6" +lazy val scala213 = "2.13.0-M4" inThisBuild(Seq( - crossScalaVersions := Seq("2.12.6", "2.13.0-M4", "2.11.12") + crossScalaVersions := Seq(scala212, scala213, "2.11.12") )) -disablePlugins(JvmPlugin) +lazy val root = project + .in(file(".")) + .aggregate(rules, input, output, tests, compatJVM, compatJS) + .disablePlugins(ScalafixPlugin) -lazy val `scala-collection-compat` = crossProject(JSPlatform, JVMPlatform) +lazy val compat = crossProject(JSPlatform, JVMPlatform) .withoutSuffixFor(JVMPlatform) .crossType(CrossType.Pure) .in(file(".")) - .settings(scalaModuleSettings) - .jvmSettings(scalaModuleSettingsJVM) .settings( - name := "scala-collection-compat", + moduleName := "scala-collection-compat", version := "0.1-SNAPSHOT", scalacOptions ++= Seq("-feature", "-language:higherKinds", "-language:implicitConversions"), unmanagedSourceDirectories in Compile += { val sharedSourceDir = baseDirectory.value.getParentFile / "src/main" if (scalaVersion.value.startsWith("2.13.")) sharedSourceDir / "scala-2.13" else sharedSourceDir / "scala-2.11_2.12" - } + }, + scalaVersion := scala212 ) + .settings(scalaModuleSettings) + .jvmSettings(scalaModuleSettingsJVM) .jvmSettings( OsgiKeys.exportPackage := Seq(s"scala.collection.compat.*;version=${version.value}"), libraryDependencies += "com.novocode" % "junit-interface" % "0.11" % "test" @@ -36,6 +44,56 @@ lazy val `scala-collection-compat` = crossProject(JSPlatform, JVMPlatform) fork in Test := false // Scala.js cannot run forked tests ) .jsConfigure(_.enablePlugins(ScalaJSJUnitPlugin)) + .disablePlugins(ScalafixPlugin) + +lazy val compatJVM = compat.jvm +lazy val compatJS = compat.js + +lazy val rules = project + .in(file("scalafix/rules")) + .settings( + scalaVersion := scalafixScala212, + libraryDependencies += "ch.epfl.scala" %% "scalafix-core" % scalafixVersion + ) + +lazy val input = project + .in(file("scalafix/input")) + .settings( + scalaVersion := scalafixScala212, + scalafixSourceroot := sourceDirectory.in(Compile).value + ) + +lazy val output = project + .in(file("scalafix/output")) + .settings( + resolvers += "scala-pr" at "https://scala-ci.typesafe.com/artifactory/scala-integration/", + scalaVersion := scala213 + ) + +lazy val outputFailure = project + .in(file("scalafix/output-failure")) + .settings( + resolvers += "scala-pr" at "https://scala-ci.typesafe.com/artifactory/scala-integration/", + scalaVersion := scala213 + ) -lazy val `scala-collection-compatJVM` = `scala-collection-compat`.jvm -lazy val `scala-collection-compatJS` = `scala-collection-compat`.js +lazy val tests = project + .in(file("scalafix/tests")) + .settings( + scalaVersion := scalafixScala212, + libraryDependencies += "ch.epfl.scala" % "scalafix-testkit" % scalafixVersion % Test cross CrossVersion.full, + buildInfoPackage := "fix", + buildInfoKeys := Seq[BuildInfoKey]( + "inputSourceroot" -> + sourceDirectory.in(input, Compile).value, + "outputSourceroot" -> + sourceDirectory.in(output, Compile).value, + "outputFailureSourceroot" -> + sourceDirectory.in(outputFailure, Compile).value, + "inputClassdirectory" -> + classDirectory.in(input, Compile).value + ), + test in Test := (test in Test).dependsOn(compile in (output, Compile)).value + ) + .dependsOn(input, rules) + .enablePlugins(BuildInfoPlugin) diff --git a/project/plugins.sbt b/project/plugins.sbt index 0670f0ee..2053c48a 100644 --- a/project/plugins.sbt +++ b/project/plugins.sbt @@ -11,3 +11,6 @@ val scalaJSVersion = addSbtPlugin("org.scala-js" % "sbt-scalajs" % scalaJSVersion) addSbtPlugin("org.portable-scala" % "sbt-scalajs-crossproject" % "0.4.0") addSbtPlugin("org.scala-lang.modules" % "sbt-scala-module" % "1.0.14") + +addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % "0.5.10") +addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.7.0") \ No newline at end of file diff --git a/scalafix/build.sbt b/scalafix/build.sbt deleted file mode 100644 index 9406fe10..00000000 --- a/scalafix/build.sbt +++ /dev/null @@ -1,52 +0,0 @@ -def scalafixVersion = _root_.scalafix.Versions.version -inScope(Global)( - List( - scalaVersion := _root_.scalafix.Versions.scala212 - ) -) - -lazy val root = project - .in(file(".")) - .aggregate( - rules, input, output, tests - ) - -lazy val rules = project.settings( - libraryDependencies += "ch.epfl.scala" %% "scalafix-core" % scalafixVersion -) - -lazy val input = project - .settings( - scalafixSourceroot := sourceDirectory.in(Compile).value - ) - -lazy val output = project - .settings( - resolvers += "scala-pr" at "https://scala-ci.typesafe.com/artifactory/scala-integration/", - scalaVersion := "2.13.0-M4" - ) - -lazy val outputFailure = project.in(file("output-failure")) - .settings( - resolvers += "scala-pr" at "https://scala-ci.typesafe.com/artifactory/scala-integration/", - scalaVersion := "2.13.0-M4" - ) - -lazy val tests = project - .settings( - libraryDependencies += "ch.epfl.scala" % "scalafix-testkit" % scalafixVersion % Test cross CrossVersion.full, - buildInfoPackage := "fix", - buildInfoKeys := Seq[BuildInfoKey]( - "inputSourceroot" -> - sourceDirectory.in(input, Compile).value, - "outputSourceroot" -> - sourceDirectory.in(output, Compile).value, - "outputFailureSourceroot" -> - sourceDirectory.in(outputFailure, Compile).value, - "inputClassdirectory" -> - classDirectory.in(input, Compile).value - ), - test in Test := (test in Test).dependsOn(compile in (output, Compile)).value - ) - .dependsOn(input, rules) - .enablePlugins(BuildInfoPlugin) diff --git a/scalafix/project/build.properties b/scalafix/project/build.properties deleted file mode 100644 index c091b86c..00000000 --- a/scalafix/project/build.properties +++ /dev/null @@ -1 +0,0 @@ -sbt.version=0.13.16 diff --git a/scalafix/project/plugins.sbt b/scalafix/project/plugins.sbt deleted file mode 100644 index 0fd7a907..00000000 --- a/scalafix/project/plugins.sbt +++ /dev/null @@ -1,3 +0,0 @@ -addSbtPlugin("ch.epfl.scala" % "sbt-scalafix" % "0.5.10") -addSbtPlugin("io.get-coursier" % "sbt-coursier" % "1.0.0") -addSbtPlugin("com.eed3si9n" % "sbt-buildinfo" % "0.6.1") \ No newline at end of file