From 6b1a84c56316195b33558e363e5646650af9236e Mon Sep 17 00:00:00 2001 From: Alexandre Archambault Date: Wed, 12 Dec 2018 11:19:05 +0100 Subject: [PATCH] Add addSbtCoursier helper to sbt-lm-coursier too (#16) --- build.sbt | 1 + .../sbtcoursiershared/Properties.scala | 25 ++++++++++++++++++ .../sbtcoursiershared/SbtCoursierShared.scala | 2 ++ .../coursier/sbtcoursier/CoursierPlugin.scala | 9 +++++-- .../shared-2/sbt-assembly/project/plugins.sbt | 14 +--------- .../sbtlmcoursier/LmCoursierPlugin.scala | 8 +++++- project/Settings.scala | 26 ++++++++++++++++++- 7 files changed, 68 insertions(+), 17 deletions(-) create mode 100644 modules/sbt-coursier-shared/src/main/scala/coursier/sbtcoursiershared/Properties.scala diff --git a/build.sbt b/build.sbt index c1ba154f1..3d821b54f 100644 --- a/build.sbt +++ b/build.sbt @@ -45,6 +45,7 @@ lazy val `sbt-coursier-shared` = project .dependsOn(`lm-coursier`) .settings( plugin, + generatePropertyFile, libraryDependencies += "com.lihaoyi" %% "utest" % "0.6.4" % Test, testFrameworks += new TestFramework("utest.runner.Framework") ) diff --git a/modules/sbt-coursier-shared/src/main/scala/coursier/sbtcoursiershared/Properties.scala b/modules/sbt-coursier-shared/src/main/scala/coursier/sbtcoursiershared/Properties.scala new file mode 100644 index 000000000..b4957f866 --- /dev/null +++ b/modules/sbt-coursier-shared/src/main/scala/coursier/sbtcoursiershared/Properties.scala @@ -0,0 +1,25 @@ +package coursier.sbtcoursiershared + +import java.util.{Properties => JProperties} + +object Properties { + + private lazy val props = { + val p = new JProperties + try { + p.load( + getClass + .getClassLoader + .getResourceAsStream("coursier/sbtcoursier.properties") + ) + } + catch { + case _: NullPointerException => + } + p + } + + lazy val version = props.getProperty("version") + lazy val commitHash = props.getProperty("commit-hash") + +} diff --git a/modules/sbt-coursier-shared/src/main/scala/coursier/sbtcoursiershared/SbtCoursierShared.scala b/modules/sbt-coursier-shared/src/main/scala/coursier/sbtcoursiershared/SbtCoursierShared.scala index 67c64677c..1daf677c3 100644 --- a/modules/sbt-coursier-shared/src/main/scala/coursier/sbtcoursiershared/SbtCoursierShared.scala +++ b/modules/sbt-coursier-shared/src/main/scala/coursier/sbtcoursiershared/SbtCoursierShared.scala @@ -42,6 +42,8 @@ object SbtCoursierShared extends AutoPlugin { type CoursierCreateLogger = coursier.lmcoursier.CreateLogger val CoursierCreateLogger = coursier.lmcoursier.CreateLogger + + val sbtCoursierVersion = Properties.version } import autoImport._ diff --git a/modules/sbt-coursier/src/main/scala/coursier/sbtcoursier/CoursierPlugin.scala b/modules/sbt-coursier/src/main/scala/coursier/sbtcoursier/CoursierPlugin.scala index a029278b8..527afb9f0 100644 --- a/modules/sbt-coursier/src/main/scala/coursier/sbtcoursier/CoursierPlugin.scala +++ b/modules/sbt-coursier/src/main/scala/coursier/sbtcoursier/CoursierPlugin.scala @@ -12,6 +12,8 @@ object CoursierPlugin extends AutoPlugin { override def requires = SbtCoursierShared + import SbtCoursierShared.autoImport._ + object autoImport { val coursierParallelDownloads = Keys.coursierParallelDownloads val coursierMaxIterations = Keys.coursierMaxIterations @@ -39,9 +41,12 @@ object CoursierPlugin extends AutoPlugin { val coursierClassifiersArtifacts = Keys.coursierClassifiersArtifacts val coursierSbtClassifiersArtifacts = Keys.coursierSbtClassifiersArtifacts - val coursierVersion = coursier.util.Properties.version + @deprecated("Use sbtCoursierVersion instead", "1.1.0-M9") + val coursierVersion = sbtCoursierVersion + val addSbtCoursier = { - addSbtPlugin("io.get-coursier" % "sbt-coursier" % coursierVersion) + import sbt._ + addSbtPlugin("io.get-coursier" % "sbt-coursier" % sbtCoursierVersion) } } diff --git a/modules/sbt-coursier/src/sbt-test/shared-2/sbt-assembly/project/plugins.sbt b/modules/sbt-coursier/src/sbt-test/shared-2/sbt-assembly/project/plugins.sbt index 71a44ffd3..3a2d48ea4 100644 --- a/modules/sbt-coursier/src/sbt-test/shared-2/sbt-assembly/project/plugins.sbt +++ b/modules/sbt-coursier/src/sbt-test/shared-2/sbt-assembly/project/plugins.sbt @@ -1,13 +1 @@ -addSbtPlugin { - - val name = sys.props.getOrElse( - "plugin.name", - sys.error("plugin.name Java property not set") - ) - val version = sys.props.getOrElse( - "plugin.version", - sys.error("plugin.version Java property not set") - ) - - "io.get-coursier" % name % version -} \ No newline at end of file +addSbtCoursier diff --git a/modules/sbt-lm-coursier/src/main/scala/coursier/sbtlmcoursier/LmCoursierPlugin.scala b/modules/sbt-lm-coursier/src/main/scala/coursier/sbtlmcoursier/LmCoursierPlugin.scala index 1b58e01b3..93b58ea5d 100644 --- a/modules/sbt-lm-coursier/src/main/scala/coursier/sbtlmcoursier/LmCoursierPlugin.scala +++ b/modules/sbt-lm-coursier/src/main/scala/coursier/sbtlmcoursier/LmCoursierPlugin.scala @@ -12,12 +12,18 @@ import sbt.librarymanagement.DependencyResolution object LmCoursierPlugin extends AutoPlugin { + import SbtCoursierShared.autoImport._ + object autoImport { val coursierConfiguration = taskKey[CoursierConfiguration]("General dependency management (Coursier) settings, such as the resolvers and options to use.").withRank(DTask) + + val addSbtCoursier = { + import sbt._ + addSbtPlugin("io.get-coursier" % "sbt-lm-coursier" % sbtCoursierVersion) + } } import autoImport._ - import SbtCoursierShared.autoImport._ override def trigger = allRequirements diff --git a/project/Settings.scala b/project/Settings.scala index 44b387f80..9b98c6db4 100644 --- a/project/Settings.scala +++ b/project/Settings.scala @@ -50,5 +50,29 @@ object Settings { PgpKeys.publishSigned := PgpKeys.publishSigned.in(Shading).value, PgpKeys.publishLocalSigned := PgpKeys.publishLocalSigned.in(Shading).value ) - + + lazy val generatePropertyFile = + resourceGenerators.in(Compile) += Def.task { + import sys.process._ + + val dir = classDirectory.in(Compile).value / "coursier" + val ver = version.value + + val f = dir / "sbtcoursier.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 java.io.FileOutputStream(f) + p.store(w, "sbt-coursier properties") + w.close() + + state.value.log.info(s"Wrote $f") + + Seq(f) + } + }