diff --git a/build.sbt b/build.sbt index e8184b8ed..3fd808f3c 100644 --- a/build.sbt +++ b/build.sbt @@ -1,3 +1,4 @@ +import java.io.FileOutputStream lazy val releaseSettings = Seq( publishMavenStyle := true, @@ -110,7 +111,28 @@ lazy val commonSettings = baseCommonSettings ++ Seq( lazy val core = crossProject .settings(commonSettings: _*) .settings( - name := "coursier" + name := "coursier", + resourceGenerators.in(Compile) += { + (target, version).map { (dir, ver) => + import sys.process._ + + val f = dir / "coursier.properties" + dir.mkdirs() + + val p = new java.util.Properties() + + p.setProperty("version", ver) + p.setProperty("commit-hash", Seq("git", "rev-parse", "HEAD").!!.trim) + + val w = new FileOutputStream(f) + p.store(w, "Coursier properties") + w.close() + + println(s"Wrote $f") + + Seq(f) + }.taskValue + } ) .jvmSettings( libraryDependencies ++= diff --git a/cli/src/main/scala-2.11/coursier/cli/Coursier.scala b/cli/src/main/scala-2.11/coursier/cli/Coursier.scala index 9f3742861..8f0d95eb8 100644 --- a/cli/src/main/scala-2.11/coursier/cli/Coursier.scala +++ b/cli/src/main/scala-2.11/coursier/cli/Coursier.scala @@ -574,4 +574,5 @@ case class Bootstrap( object Coursier extends CommandAppOf[CoursierCommand] { override def appName = "Coursier" override def progName = "coursier" + override def appVersion = coursier.util.Properties.version } diff --git a/core/shared/src/main/scala/coursier/util/Properties.scala b/core/shared/src/main/scala/coursier/util/Properties.scala new file mode 100644 index 000000000..365c182ea --- /dev/null +++ b/core/shared/src/main/scala/coursier/util/Properties.scala @@ -0,0 +1,20 @@ +package coursier.util + +import java.util.Properties + +object Properties { + + private lazy val props = { + val p = new Properties() + p.load( + getClass + .getClassLoader + .getResourceAsStream("coursier.properties") + ) + p + } + + lazy val version = props.getProperty("version") + lazy val commitHash = props.getProperty("commit-hash") + +}