summaryrefslogtreecommitdiff
path: root/examples/scala-js/project/project/ScalaJSEnvGenerator.scala
blob: a36479f080a73dc6fc6a17adc75a048914b0d65a (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
import sbt._

object ScalaJSEnvGenerator {

  /** Generate a *.scala file that contains the scalajsenv as literal string
   *
   *  We need this so the tools don't rely on I/O and/or resources.
   */
  def generateEnvHolder(baseDir: File, sourceDir: File): Seq[File] = {
    val trg = sourceDir / "ScalaJSEnvHolder.scala"
    val env = baseDir / "scalajsenv.js"

    if (!trg.exists() || trg.lastModified() < env.lastModified()) {
      val scalajsenv = IO.read(env).replaceAllLiterally("$", "$$")

      val scalaCode =
        s"""
        package scala.scalajs.tools.corelib

        private[corelib] object ScalaJSEnvHolder {
          final val scalajsenv = raw\"\"\"$scalajsenv\"\"\"
        }
        """

      IO.write(trg, scalaCode)
    }

    Seq(trg)
  }

}