build.sbt (73 lines of code) (raw):

import sbtrelease._ import ReleaseStateTransformations._ import sbtrelease.ReleaseStateTransformations._ import sbtversionpolicy.withsbtrelease.ReleaseVersion val scroogeVersion = "22.1.0" val thriftVersion = "0.20.0" val artifactProductionSettings = Seq( organization := "com.gu", scalaVersion := "2.13.12", // scrooge 21.3.0: Builds are now only supported for Scala 2.12+ // https://twitter.github.io/scrooge/changelog.html#id11 crossScalaVersions := Seq("2.12.18", scalaVersion.value), scalacOptions ++= Seq("-release:11"),// going ahead with release option only. We might add more options if any implementation comes in future : ("-feature", "-deprecation", "-unchecked", "-Xfatal-warnings") licenses := Seq(License.Apache2), Test / testOptions += Tests.Argument(TestFrameworks.ScalaTest, "-u", s"test-results/scala-${scalaVersion.value}", "-o") ) lazy val root = (project in file(".")) .settings(artifactProductionSettings) .aggregate(thrift, scalaClasses) .settings( publish / skip := true, releaseVersion := ReleaseVersion.fromAggregatedAssessedCompatibilityWithLatestRelease().value, releaseCrossBuild := true, releaseProcess := Seq[ReleaseStep]( checkSnapshotDependencies, inquireVersions, runClean, runTest, setReleaseVersion, commitReleaseVersion, tagRelease, setNextVersion, commitNextVersion ) ) lazy val scalaClasses = (project in file("scala")) .settings(artifactProductionSettings) .settings( name := "content-entity-model", description := "Scala library built from Content-entity thrift definition", Compile / scroogeThriftSourceFolder := baseDirectory.value / "../thrift/src/main/thrift", Compile / scroogeThriftOutputFolder := sourceManaged.value, Compile / scroogePublishThrift := true, Compile / managedSourceDirectories += (Compile / scroogeThriftOutputFolder).value, libraryDependencies ++= Seq( "org.apache.thrift" % "libthrift" % thriftVersion, "com.twitter" %% "scrooge-core" % scroogeVersion, "org.scalacheck" %% "scalacheck" % "1.17.0" % "test" ) ) lazy val thrift = (project in file("thrift")) .settings(artifactProductionSettings) .disablePlugins(ScroogeSBT) .settings( name := "content-entity-thrift", description := "Content entity model Thrift files", crossPaths := false, packageDoc / publishArtifact := false, packageSrc / publishArtifact := false, Compile / unmanagedResourceDirectories += { baseDirectory.value / "src/main/thrift" } ) lazy val typescriptClasses = (project in file("ts")) .enablePlugins(ScroogeTypescriptGen) .settings(artifactProductionSettings) .settings( publish / skip := true, name := "content-entity-typescript", scroogeTypescriptNpmPackageName := "@guardian/content-entity-model", Compile / scroogeDefaultJavaNamespace := scroogeTypescriptNpmPackageName.value, Test / scroogeDefaultJavaNamespace := scroogeTypescriptNpmPackageName.value, description := "Typescript library built from Content-entity thrift definition", Compile / scroogeLanguages := Seq("typescript"), Compile / scroogeThriftSourceFolder := baseDirectory.value / "../thrift/src/main/thrift", scroogeTypescriptPackageLicense := "Apache-2.0" )