From abebce39d4ccccc50719240d5c5c02515ae58528 Mon Sep 17 00:00:00 2001 From: Sergey Morgunov Date: Fri, 23 Jun 2023 16:44:43 +0300 Subject: [PATCH] Sync version between Sbt and Gradle --- .github/workflows/build-test.yml | 1 + .gitignore | 2 ++ build.sbt | 19 ++++++++++++++++++- gradle-twirl/build.gradle.kts | 12 +++++++++++- 4 files changed, 32 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build-test.yml b/.github/workflows/build-test.yml index 494d7751..ad3b538e 100644 --- a/.github/workflows/build-test.yml +++ b/.github/workflows/build-test.yml @@ -27,6 +27,7 @@ jobs: gradle-build-root: gradle-twirl cmd: | sbt validateCode + sbt compiler/publishM2 cd gradle-twirl && ./gradlew clean spotlessCheck --no-daemon check-binary-compatibility: diff --git a/.gitignore b/.gitignore index 9e31eead..7a23fd8c 100644 --- a/.gitignore +++ b/.gitignore @@ -15,3 +15,5 @@ project/plugins/project/ .idea .bloop/ + +compiler/version.properties diff --git a/build.sbt b/build.sbt index 38674581..ed1e8077 100644 --- a/build.sbt +++ b/build.sbt @@ -9,6 +9,8 @@ import com.typesafe.tools.mima.core.Problem import com.typesafe.tools.mima.core.ProblemFilters import sbtcrossproject.CrossPlugin.autoImport.crossProject import org.scalajs.jsenv.nodejs.NodeJSEnv +import java.util.Properties +import java.io.StringWriter // Binary compatibility is this version val previousVersion: Option[String] = Some("1.5.1") @@ -58,6 +60,7 @@ lazy val twirl = project (Compile / headerSources) ++= ((baseDirectory.value ** ("*.properties" || "*.md" || "*.sbt" || "*.scala.html")) --- (baseDirectory.value ** "target" ** "*") + --- (baseDirectory.value / "compiler" / "version.properties") --- (baseDirectory.value ** "gradle-twirl" ** "*") // Gradle Spotless plugin is used --- (baseDirectory.value / "docs" ** "*")).get ++ (baseDirectory.value / "project" ** "*.scala" --- (baseDirectory.value ** "target" ** "*")).get @@ -129,7 +132,10 @@ lazy val compiler = project libraryDependencies += ("org.scalameta" %% "parsers" % "4.8.6").cross(CrossVersion.for3Use2_13), run / fork := true, buildInfoKeys := Seq[BuildInfoKey](scalaVersion), - buildInfoPackage := "play.twirl.compiler" + buildInfoPackage := "play.twirl.compiler", + publishM2 := publishM2.dependsOn(saveCompilerVersion).value, + publish := publish.dependsOn(saveCompilerVersion).value, + publishLocal := publishLocal.dependsOn(saveCompilerVersion).value ) .aggregate(parser) .dependsOn(apiJvm % Test, parser % "compile->compile;test->test") @@ -172,6 +178,17 @@ def generateVersionFile = Seq(file) } +def saveCompilerVersion = + Def.task { + val props = new Properties() + val writer = new StringWriter() + val file = baseDirectory.value / "version.properties" + props.setProperty("twirl.compiler.version", version.value) + props.store(writer, "") + IO.write(file, writer.getBuffer.toString) + Seq(file) + } + addCommandAlias( "validateCode", List( diff --git a/gradle-twirl/build.gradle.kts b/gradle-twirl/build.gradle.kts index 884e8149..0d3f641b 100644 --- a/gradle-twirl/build.gradle.kts +++ b/gradle-twirl/build.gradle.kts @@ -4,6 +4,7 @@ import java.time.Duration import java.util.Base64 +import java.util.Properties import kotlin.text.Charsets.UTF_8 plugins { @@ -13,13 +14,22 @@ plugins { signing } +val compilerVersion: String = + Properties().apply { + val file = file("$projectDir/../compiler/version.properties") + if (!file.exists()) throw GradleException("Install Twirl Compiler to local Maven repository by `sbt compiler/publishM2` command") + file.inputStream().use { load(it) } + if (this.getProperty("twirl.compiler.version").isNullOrEmpty()) throw GradleException("`twirl.compiler.version` key didn't find in ${file.absolutePath}") + }.getProperty("twirl.compiler.version") + // group = "com.playframework" // group and plugin id must use same top level namespace group = "com.typesafe.play" // TODO: uncomment line above and remove this -version = "0.0.1-SNAPSHOT" +version = compilerVersion repositories { // Use Maven Central for resolving dependencies. mavenCentral() + mavenLocal() } testing {