sbt/project/Status.scala

30 lines
994 B
Scala
Raw Normal View History

2011-06-26 18:27:07 +02:00
import sbt._
import Keys._
import java.util.regex.Pattern
2011-06-26 18:27:07 +02:00
object Status
{
lazy val isSnapshot = SettingKey[Boolean]("is-snapshot")
lazy val publishStatus = SettingKey[String]("publish-status")
def settings: Seq[Setting[_]] = Seq(
2012-04-14 00:09:26 +02:00
isSnapshot <<= version(v => v.contains("-") && snapshotQualifier(v)),
2011-06-26 18:27:07 +02:00
publishStatus <<= isSnapshot { snap => if(snap) "snapshots" else "releases" },
commands += stampVersion
)
def stampVersion = Command.command("stamp-version") { state =>
Project.extract(state).append((version in ThisBuild ~= stamp) :: Nil, state)
2011-06-26 18:27:07 +02:00
}
def stamp(v: String): String =
if(v endsWith Snapshot)
(v stripSuffix Snapshot) + "-" + timestampString(System.currentTimeMillis)
else
v
def timestampString(time: Long): String =
{
val format = new java.text.SimpleDateFormat("yyyyMMdd-HHmmss")
format.format(new java.util.Date(time))
}
final val Snapshot = "-SNAPSHOT"
2012-05-28 02:03:09 +02:00
def snapshotQualifier(v: String) = !Pattern.matches(""".+-(M|Alpha|Beta|RC)?\d+""", v)
2011-06-26 18:27:07 +02:00
}