sbt/project/Util.scala

37 lines
1.4 KiB
Scala
Raw Normal View History

2015-09-02 09:03:20 +02:00
import sbt._
import Keys._
import sbt.IO
import java.io.File
2017-06-14 07:56:08 +02:00
import xsbti.compile.CompileAnalysis
2015-09-02 09:03:20 +02:00
object Util {
def versionLine(version: String): String = "version=" + version
2017-04-26 22:55:38 +02:00
def containsVersion(propFile: File, version: String): Boolean =
IO.read(propFile).contains(versionLine(version))
2017-06-14 07:56:08 +02:00
def lastCompilationTime(analysis0: CompileAnalysis): Long = {
val analysis = analysis0 match { case a: sbt.internal.inc.Analysis => a }
2017-04-26 22:55:38 +02:00
val lastCompilation = analysis.compilations.allCompilations.lastOption
2017-06-14 07:56:08 +02:00
lastCompilation.map(_.getStartTime) getOrElse 0L
2017-04-26 22:55:38 +02:00
}
2015-09-02 09:03:20 +02:00
2017-04-26 22:55:38 +02:00
def generateVersionFile(version: String,
dir: File,
s: TaskStreams,
2017-06-14 07:56:08 +02:00
analysis: CompileAnalysis): Seq[File] = {
2017-04-26 22:55:38 +02:00
import java.util.{ Date, TimeZone }
val formatter = new java.text.SimpleDateFormat("yyyyMMdd'T'HHmmss")
formatter.setTimeZone(TimeZone.getTimeZone("GMT"))
val timestamp = formatter.format(new Date)
val content = versionLine(version) + "\ntimestamp=" + timestamp
val f = dir / "xsbt.version.properties"
if (!f.exists || f.lastModified < lastCompilationTime(analysis) || !containsVersion(f,
version)) {
s.log.info("Writing version information to " + f + " :\n" + content)
IO.write(f, content)
2015-09-02 09:03:20 +02:00
}
2017-04-26 22:55:38 +02:00
f :: Nil
}
2015-09-02 09:03:20 +02:00
}