diff --git a/modules/build/src/test/scala/scala/build/tests/SourceGeneratorTests.scala b/modules/build/src/test/scala/scala/build/tests/SourceGeneratorTests.scala index efaeaba869..06b9cf544e 100644 --- a/modules/build/src/test/scala/scala/build/tests/SourceGeneratorTests.scala +++ b/modules/build/src/test/scala/scala/build/tests/SourceGeneratorTests.scala @@ -49,7 +49,12 @@ class SourceGeneratorTests extends TestUtil.ScalaCliBuildSuite { .replaceAll( "ivy:file:[^\"]*\\.ivy2/local[^\"]*", "ivy:file:.../.ivy2/local/" - ).linesWithSeparators + ) + .replaceAll( + "val scalaCliVersion = Some\\(\"[^\"]*\"\\)", + "val scalaCliVersion = Some\\(\"1.1.1-SNAPSHOT\"\\)" + ) + .linesWithSeparators .filterNot(_.stripLeading().startsWith("/**")) .mkString @@ -126,6 +131,7 @@ class SourceGeneratorTests extends TestUtil.ScalaCliBuildSuite { | val scalaNativeVersion = None | val mainClass = Some("Main") | val projectVersion = Some("1.0.0") + | val scalaCliVersion = Some("1.1.1-SNAPSHOT") | | object Main { | val sources = Seq("${root / "main.scala"}") @@ -204,6 +210,7 @@ class SourceGeneratorTests extends TestUtil.ScalaCliBuildSuite { | val scalaNativeVersion = Some("0.4.6") | val mainClass = Some("Main") | val projectVersion = None + | val scalaCliVersion = Some("1.1.1-SNAPSHOT") | | object Main { | val sources = Seq("${root / "main.scala"}") @@ -281,6 +288,7 @@ class SourceGeneratorTests extends TestUtil.ScalaCliBuildSuite { | val scalaNativeVersion = None | val mainClass = Some("Main") | val projectVersion = None + | val scalaCliVersion = Some("1.1.1-SNAPSHOT") | | object Main { | val sources = Seq("${root / "main.scala"}") @@ -355,6 +363,7 @@ class SourceGeneratorTests extends TestUtil.ScalaCliBuildSuite { | val scalaNativeVersion = None | val mainClass = Some("Main") | val projectVersion = None + | val scalaCliVersion = Some("1.1.1-SNAPSHOT") | | object Main { | val sources = Seq("${root / "main.scala"}") diff --git a/modules/generate-reference-doc/src/main/scala/scala/cli/doc/GenerateReferenceDoc.scala b/modules/generate-reference-doc/src/main/scala/scala/cli/doc/GenerateReferenceDoc.scala index 13398552b0..28a4c6ea5c 100644 --- a/modules/generate-reference-doc/src/main/scala/scala/cli/doc/GenerateReferenceDoc.scala +++ b/modules/generate-reference-doc/src/main/scala/scala/cli/doc/GenerateReferenceDoc.scala @@ -575,7 +575,8 @@ object GenerateReferenceDoc extends CaseApp[InternalDocOptions] { jsEsVersion = None, scalaNativeVersion = None, mainClass = Some("Main"), - projectVersion = None + projectVersion = None, + scalaCliVersion = Some("1.7.0") ) .withScope("main", mainScopedBuildInfo) .withScope("test", testScopedBuildInfo) diff --git a/modules/integration/src/test/scala/scala/cli/integration/ExportJsonTestDefinitions.scala b/modules/integration/src/test/scala/scala/cli/integration/ExportJsonTestDefinitions.scala index 76a77117c8..90169be49c 100644 --- a/modules/integration/src/test/scala/scala/cli/integration/ExportJsonTestDefinitions.scala +++ b/modules/integration/src/test/scala/scala/cli/integration/ExportJsonTestDefinitions.scala @@ -18,6 +18,10 @@ abstract class ExportJsonTestDefinitions extends ScalaCliSuite with TestScalaVer "ivy:file:[^\"]*\\.ivy2/local[^\"]*", "ivy:file:.../.ivy2/local/" ) + .replaceAll( + "\"scalaCliVersion\":(\"[^\"]*\")", + "\"scalaCliVersion\":\"1.1.1-SNAPSHOT\"" + ) private def withEscapedBackslashes(s: os.Path): String = s.toString.replaceAll("\\\\", "\\\\\\\\") @@ -71,6 +75,7 @@ abstract class ExportJsonTestDefinitions extends ScalaCliSuite with TestScalaVer | ] | } |]] + |,"scalaCliVersion":"1.1.1-SNAPSHOT" |} |""".replaceAll("\\s|\\|", "")) } @@ -172,6 +177,7 @@ abstract class ExportJsonTestDefinitions extends ScalaCliSuite with TestScalaVer | "customJarsDecls":["${withEscapedBackslashes(root / "TEST.jar")}"] | } |]] + |,"scalaCliVersion":"1.1.1-SNAPSHOT" |} |""".replaceAll("\\s|\\|", "")) } @@ -248,7 +254,7 @@ abstract class ExportJsonTestDefinitions extends ScalaCliSuite with TestScalaVer | "ivy:file:.../.ivy2/local/" | ] | } - |]] + |]],"scalaCliVersion":"1.1.1-SNAPSHOT" |} |""".replaceAll("\\s|\\|", "")) diff --git a/modules/options/src/main/scala/scala/build/info/BuildInfo.scala b/modules/options/src/main/scala/scala/build/info/BuildInfo.scala index 4c08c49a32..a282ce0197 100644 --- a/modules/options/src/main/scala/scala/build/info/BuildInfo.scala +++ b/modules/options/src/main/scala/scala/build/info/BuildInfo.scala @@ -15,7 +15,8 @@ final case class BuildInfo( jsEsVersion: Option[String] = None, scalaNativeVersion: Option[String] = None, mainClass: Option[String] = None, - scopes: Map[String, ScopedBuildInfo] = Map.empty + scopes: Map[String, ScopedBuildInfo] = Map.empty, + scalaCliVersion: Option[String] = None ) { def +(other: BuildInfo): BuildInfo = BuildInfo.monoid.orElse(this, other) @@ -64,7 +65,11 @@ final case class BuildInfo( Seq( "/** Project version */", "val projectVersion =" - ) -> projectVersion + ) -> projectVersion, + Seq( + "/** Scala CLI version used for the compilation */", + "val scalaCliVersion =" + ) -> scalaCliVersion ).flatMap { case (Seq(scaladoc, prefix), opt) => Seq( scaladoc, @@ -113,7 +118,8 @@ object BuildInfo { ) ), scalaVersionSettings(options), - platformSettings(options) + platformSettings(options), + scalaCliSettings(options) ) .reduceLeft(_ + _) }.left.map { @@ -158,6 +164,9 @@ object BuildInfo { .orElse(Some(options.javaHome().value.version.toString)) ) + private def scalaCliSettings(options: BuildOptions): BuildInfo = + BuildInfo(scalaCliVersion = Some(Constants.version)) + private def platformSettings(options: BuildOptions): BuildInfo = options.scalaOptions.platform.map(_.value) match { case Some(Platform.JS) => diff --git a/website/docs/reference/build-info.md b/website/docs/reference/build-info.md index 6772aaa762..86ca7f5a0d 100644 --- a/website/docs/reference/build-info.md +++ b/website/docs/reference/build-info.md @@ -51,6 +51,8 @@ object BuildInfo { val mainClass = Some("Main") /** Project version */ val projectVersion = None + /** Scala CLI version used for the compilation */ + val scalaCliVersion = Some("1.7.0") /** Information about the Main scope */ object Main {