From 0e3b31d7c217bf4e710e4719c9f49243c27c2b07 Mon Sep 17 00:00:00 2001 From: Peter Vlugter Date: Fri, 12 Feb 2016 17:57:27 +1300 Subject: [PATCH] Generate version files from the version sbt setting --- .../test/scala/akka/config/ConfigSpec.scala | 4 +-- akka-actor/build.sbt | 4 ++- akka-actor/src/main/resources/reference.conf | 6 ++-- .../main/scala/akka/actor/ActorSystem.scala | 2 +- project/Version.scala | 31 +++++++++++++++++++ 5 files changed, 40 insertions(+), 7 deletions(-) create mode 100644 project/Version.scala diff --git a/akka-actor-tests/src/test/scala/akka/config/ConfigSpec.scala b/akka-actor-tests/src/test/scala/akka/config/ConfigSpec.scala index b477ae703a..23f3221a82 100644 --- a/akka-actor-tests/src/test/scala/akka/config/ConfigSpec.scala +++ b/akka-actor-tests/src/test/scala/akka/config/ConfigSpec.scala @@ -27,8 +27,8 @@ class ConfigSpec extends AkkaSpec(ConfigFactory.defaultReference(ActorSystem.fin { import config._ - getString("akka.version") should ===("2.4-SNAPSHOT") - settings.ConfigVersion should ===("2.4-SNAPSHOT") + getString("akka.version") should ===(ActorSystem.Version) + settings.ConfigVersion should ===(ActorSystem.Version) getBoolean("akka.daemonic") should ===(false) diff --git a/akka-actor/build.sbt b/akka-actor/build.sbt index d3936eac51..052599abfe 100644 --- a/akka-actor/build.sbt +++ b/akka-actor/build.sbt @@ -1,4 +1,4 @@ -import akka.{ AkkaBuild, Formatting, OSGi, Dependencies } +import akka.{ AkkaBuild, Formatting, OSGi, Dependencies, Version } import com.typesafe.tools.mima.plugin.MimaKeys AkkaBuild.defaultSettings @@ -12,3 +12,5 @@ Dependencies.actor MimaKeys.previousArtifacts := akkaPreviousArtifacts("akka-actor").value spray.boilerplate.BoilerplatePlugin.Boilerplate.settings + +Version.versionSettings diff --git a/akka-actor/src/main/resources/reference.conf b/akka-actor/src/main/resources/reference.conf index 9455c6d323..40eac6f30a 100644 --- a/akka-actor/src/main/resources/reference.conf +++ b/akka-actor/src/main/resources/reference.conf @@ -5,10 +5,10 @@ # This is the reference config file that contains all the default settings. # Make your edits/overrides in your application.conf. -akka { - # Akka version, checked against the runtime version of Akka. - version = "2.4-SNAPSHOT" +# Akka version, checked against the runtime version of Akka. Loaded from generated conf file. +include "version" +akka { # Home directory of Akka, modules in the deploy directory will be loaded home = "" diff --git a/akka-actor/src/main/scala/akka/actor/ActorSystem.scala b/akka-actor/src/main/scala/akka/actor/ActorSystem.scala index 16355cf79b..fefc774592 100644 --- a/akka-actor/src/main/scala/akka/actor/ActorSystem.scala +++ b/akka-actor/src/main/scala/akka/actor/ActorSystem.scala @@ -25,7 +25,7 @@ import java.util.Locale object ActorSystem { - val Version: String = "2.4-SNAPSHOT" + val Version: String = akka.Version.current // generated file val EnvHome: Option[String] = System.getenv("AKKA_HOME") match { case null | "" | "." ⇒ None diff --git a/project/Version.scala b/project/Version.scala new file mode 100644 index 0000000000..665dc8e2fb --- /dev/null +++ b/project/Version.scala @@ -0,0 +1,31 @@ +package akka + +import sbt._ +import sbt.Keys._ + +/** + * Generate version.conf and akka/Version.scala files based on the version setting. + */ +object Version { + + def versionSettings: Seq[Setting[_]] = inConfig(Compile)(Seq( + resourceGenerators <+= generateVersion(resourceManaged, _ / "version.conf", + """|akka.version = "%s" + |"""), + sourceGenerators <+= generateVersion(sourceManaged, _ / "akka" / "Version.scala", + """|package akka + | + |object Version { + | val current: String = "%s" + |} + |""") + )) + + def generateVersion(dir: SettingKey[File], locate: File => File, template: String) = Def.task[Seq[File]] { + val file = locate(dir.value) + val content = template.stripMargin.format(version.value) + if (!file.exists || IO.read(file) != content) IO.write(file, content) + Seq(file) + } + +}