enso/project/RecompileParser.scala
2020-07-01 13:21:13 +02:00

25 lines
681 B
Scala

import sbt._
import sbt.Keys._
import sbtcrossproject.CrossProject
import sbtcrossproject.CrossPlugin.autoImport._
object RecompileParser {
/**
* Ensures that the project is recompiled whenever the project from
* `syntaxDefinition` is changed. Should be attached to the `compile` task as
* a dependency.
*/
def run(syntaxDefinition: CrossProject) =
Def.taskDyn {
val parserCompile =
(syntaxDefinition.jvm / Compile / compileIncremental).value
if (parserCompile.hasModified) {
Def.task {
streams.value.log.info("Parser changed, forcing recompilation.")
clean.value
}
} else Def.task {}
}
}