aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/xyz.driver.sbt/FatalWarnings.scala
blob: b7fc5857ad5077e3faec5a4547faa8b99a3e12b4 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
package xyz.driver.sbt

import sbt.{Def, _}
import sbt.Keys._
import xsbti.compile.CompileAnalysis

import scala.collection.JavaConverters._

object FatalWarnings extends AutoPlugin {

  override def requires = plugins.JvmPlugin
  override def trigger  = allRequirements

  override def projectSettings: Seq[Def.Setting[_]] = Seq(
    compile in Compile := {
      val compiled: CompileAnalysis = (compile in Compile).value
      val problems = compiled.readSourceInfos().getAllSourceInfos.asScala.flatMap {
        case (_, info) =>
          info.getReportedProblems
      }

      val deprecationsOnly = problems.forall { problem =>
        problem.message().contains("is deprecated")
      }

      if (!deprecationsOnly) sys.error("Fatal warnings: some warnings other than deprecations were found.")
      compiled
    }
  )

}