mirror of https://github.com/sbt/sbt.git
37 lines
1.2 KiB
Scala
37 lines
1.2 KiB
Scala
|
|
import sbt._
|
||
|
|
import Keys._
|
||
|
|
|
||
|
|
object Status
|
||
|
|
{
|
||
|
|
lazy val isSnapshot = SettingKey[Boolean]("is-snapshot")
|
||
|
|
lazy val publishStatus = SettingKey[String]("publish-status")
|
||
|
|
|
||
|
|
def settings: Seq[Setting[_]] = Seq(
|
||
|
|
isSnapshot <<= version(_ contains "-"),
|
||
|
|
publishStatus <<= isSnapshot { snap => if(snap) "snapshots" else "releases" },
|
||
|
|
commands += stampVersion
|
||
|
|
)
|
||
|
|
def stampVersion = Command.command("stamp-version") { state =>
|
||
|
|
append((version in ThisBuild ~= stamp) :: Nil, state)
|
||
|
|
}
|
||
|
|
// TODO: replace with extracted.append from 0.10.1
|
||
|
|
def append(settings: Seq[Setting[_]], state: State): State =
|
||
|
|
{
|
||
|
|
val extracted = Project.extract(state)
|
||
|
|
import extracted._
|
||
|
|
val append = Load.transformSettings(Load.projectScope(currentRef), currentRef.build, rootProject, settings)
|
||
|
|
val newStructure = Load.reapply(session.original ++ append, structure)
|
||
|
|
Project.setProject(session, newStructure, state)
|
||
|
|
}
|
||
|
|
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"
|
||
|
|
}
|