aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/xyz.driver.sbt/FatalWarnings.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/scala/xyz.driver.sbt/FatalWarnings.scala')
-rw-r--r--src/main/scala/xyz.driver.sbt/FatalWarnings.scala31
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
+ }
+ )
+
+}