summaryrefslogtreecommitdiff
path: root/project
diff options
context:
space:
mode:
authorJosh Suereth <joshua.suereth@gmail.com>2011-12-05 10:12:44 -0500
committerJosh Suereth <joshua.suereth@gmail.com>2011-12-05 10:12:44 -0500
commit7780a3667f5f9977215eba80e483d90cbdcfbb94 (patch)
tree9378ce227c9fcc4050d7f9807013de4290f406e5 /project
parent1ed57a4c19f89bc6736271fd63d465fed405c4d3 (diff)
downloadscala-7780a3667f5f9977215eba80e483d90cbdcfbb94.tar.gz
scala-7780a3667f5f9977215eba80e483d90cbdcfbb94.tar.bz2
scala-7780a3667f5f9977215eba80e483d90cbdcfbb94.zip
Step one towards using project revision to build
Diffstat (limited to 'project')
-rw-r--r--project/Layers.scala6
-rw-r--r--project/Release.scala29
-rw-r--r--project/plugins.sbt7
-rw-r--r--project/plugins/build.sbt2
-rw-r--r--project/project/Build.scala (renamed from project/plugins/project/Build.scala)4
5 files changed, 31 insertions, 17 deletions
diff --git a/project/Layers.scala b/project/Layers.scala
index cdd68554ed..84c926f072 100644
--- a/project/Layers.scala
+++ b/project/Layers.scala
@@ -1,5 +1,7 @@
import sbt._
import Keys._
+import com.jsuereth.git.GitKeys.gitRunner
+
/** This trait stores all the helper methods to generate layers in Scala's layered build. */
trait Layers extends Build {
// TODO - Clean this up or use a self-type.
@@ -57,7 +59,7 @@ trait Layers extends Build {
// TODO - Allow other scalac option settings.
scalacOptions in Compile <++= (scalaSource in Compile) map (src => Seq("-sourcepath", src.getAbsolutePath)),
classpathOptions := ClasspathOptions.manual,
- resourceGenerators in Compile <+= (baseDirectory, version, resourceManaged) map Release.generatePropertiesFile("library.properties"),
+ resourceGenerators in Compile <+= (baseDirectory, version, resourceManaged, gitRunner) map Release.generatePropertiesFile("library.properties"),
referenceScala
)) :_*)
@@ -67,7 +69,7 @@ trait Layers extends Build {
scalaSource in Compile <<= (baseDirectory) apply (_ / "src" / "compiler"),
resourceDirectory in Compile <<= baseDirectory apply (_ / "src" / "compiler"),
defaultExcludes in unmanagedResources := "*.scala",
- resourceGenerators in Compile <+= (baseDirectory, version, resourceManaged) map Release.generatePropertiesFile("compiler.properties"),
+ resourceGenerators in Compile <+= (baseDirectory, version, resourceManaged, gitRunner) map Release.generatePropertiesFile("compiler.properties"),
// Note, we might be able to use the default task, but for some reason ant was filtering files out. Not sure what's up, but we'll
// stick with that for now.
unmanagedResources in Compile <<= (baseDirectory) map {
diff --git a/project/Release.scala b/project/Release.scala
index ff1bdfbd31..a8dc14988e 100644
--- a/project/Release.scala
+++ b/project/Release.scala
@@ -1,5 +1,6 @@
import sbt._
import Keys._
+import _root_.com.jsuereth.git.GitRunner
object Release {
@@ -65,15 +66,11 @@ object Release {
/** This generates a properties file, if it does not already exist, with the maximum lastmodified timestamp
* of any source file. */
- def generatePropertiesFile(name: String)(baseDirectory: File, version: String, dir: File): Seq[File] = {
+ def generatePropertiesFile(name: String)(baseDirectory: File, version: String, dir: File, git: GitRunner): Seq[File] = {
val target = dir / name
// TODO - Regenerate on triggers, like recompilation or something...
- // TODO - also think about pulling git last-commit for this...
if (!target.exists) {
- val ts = getLastModified(baseDirectory)
- val formatter = new java.text.SimpleDateFormat("yyyyMMdd'T'HHmmss")
- formatter.setTimeZone(java.util.TimeZone.getTimeZone("GMT"))
- val fullVersion = version + "." + formatter.format(new java.util.Date(ts))
+ val fullVersion = makeFullVersionString(baseDirectory, version, git)
makePropertiesFile(target, fullVersion)
}
target :: Nil
@@ -83,12 +80,22 @@ object Release {
def makePropertiesFile(f: File, version: String): Unit =
IO.write(f, "version.number = "+version+"\ncopyright.string = Copyright 2002-2011, LAMP/EPFL")
- def makeFullVersionString(baseDirectory: File, baseVersion: String) = baseVersion+"."+getLastModified(baseDirectory)
+ def makeFullVersionString(baseDirectory: File, baseVersion: String, git: GitRunner) = baseVersion+"."+getGitRevision(baseDirectory, git)+"."+currentDay
- // TODO - Something that doesn't take so long...
- def allSourceFiles(baseDirectory: File) = (baseDirectory / "src") ** ("*.scala" | "*.java" )
+ // TODO - do we want this in the build number?
+ def currentDay = (new java.text.SimpleDateFormat("yyyyMMdd'T'HHmmss")) format (new java.util.Date)
- def getLastModified(baseDirectory: File) =
- allSourceFiles(baseDirectory).get.map(_.lastModified).max
+ def getGitRevision(baseDirectory: File, git: GitRunner) = {
+ object outputStealer extends sbt.Logger {
+ private val stdout = new StringBuilder
+ private val stderr = new StringBuilder
+ def log (level: Level.Value, message: ⇒ String): Unit = stdout append message
+ def success (message: ⇒ String): Unit = ()
+ def trace (t: ⇒ Throwable): Unit = ()
+ def stdoutString = stdout.toString
+ }
+ git("describe", "HEAD", "--abbrev=7", "--match", "dev")(baseDirectory, outputStealer)
+ outputStealer.stdoutString
+ }
}
diff --git a/project/plugins.sbt b/project/plugins.sbt
new file mode 100644
index 0000000000..2dfee4b5c9
--- /dev/null
+++ b/project/plugins.sbt
@@ -0,0 +1,7 @@
+resolvers += Resolver.url("Typesafe nightlies", url("https://typesafe.artifactoryonline.com/typesafe/ivy-snapshots/"))(Resolver.ivyStylePatterns)
+
+resolvers += Resolver.url("scalasbt", new URL("http://scalasbt.artifactoryonline.com/scalasbt/sbt-plugin-releases"))(Resolver.ivyStylePatterns)
+
+resolvers += "jgit-repo" at "http://download.eclipse.org/jgit/maven"
+
+
diff --git a/project/plugins/build.sbt b/project/plugins/build.sbt
deleted file mode 100644
index 71bf3b9379..0000000000
--- a/project/plugins/build.sbt
+++ /dev/null
@@ -1,2 +0,0 @@
-resolvers += Resolver.url("Typesafe nightlies", url("https://typesafe.artifactoryonline.com/typesafe/ivy-snapshots/"))(Resolver.ivyStylePatterns)
-
diff --git a/project/plugins/project/Build.scala b/project/project/Build.scala
index f382cf7015..97a1787e0d 100644
--- a/project/plugins/project/Build.scala
+++ b/project/project/Build.scala
@@ -1,7 +1,7 @@
import sbt._
object PluginDef extends Build {
override def projects = Seq(root)
- lazy val root = Project("plugins", file(".")) dependsOn(proguard)
+ lazy val root = Project("plugins", file(".")) dependsOn(proguard, git)
lazy val proguard = uri("git://github.com/jsuereth/xsbt-proguard-plugin.git")
- //lazy val proguard = uri("git://github.com/siasia/xsbt-proguard-plugin.git")
+ lazy val git = uri("git://github.com/sbt/sbt-git-plugin.git")
}