diff options
Diffstat (limited to 'src/main/scala/xyz.driver.sbt/FatalWarnings.scala')
-rw-r--r-- | src/main/scala/xyz.driver.sbt/FatalWarnings.scala | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/src/main/scala/xyz.driver.sbt/FatalWarnings.scala b/src/main/scala/xyz.driver.sbt/FatalWarnings.scala new file mode 100644 index 0000000..b7fc585 --- /dev/null +++ b/src/main/scala/xyz.driver.sbt/FatalWarnings.scala @@ -0,0 +1,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 + } + ) + +} |