From 3ce8008ae7d068356cdaef3b9c52ed9b2e4fdcb5 Mon Sep 17 00:00:00 2001 From: Arman Bilge Date: Fri, 10 Feb 2023 06:19:39 +0000 Subject: [PATCH 1/6] WIP support for `releaseNotesURL` --- main/src/main/scala/sbt/Defaults.scala | 10 ++++++++-- main/src/main/scala/sbt/Keys.scala | 1 + 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/main/src/main/scala/sbt/Defaults.scala b/main/src/main/scala/sbt/Defaults.scala index 81aa5e509..d8b51d201 100644 --- a/main/src/main/scala/sbt/Defaults.scala +++ b/main/src/main/scala/sbt/Defaults.scala @@ -200,7 +200,8 @@ object Defaults extends BuildCommon { autoCompilerPlugins :== true, scalaHome :== None, apiURL := None, - javaHome :== None, + releaseNotesURL := None + javaHome :== None, discoveredJavaHomes := CrossJava.discoverJavaHomes, javaHomes :== ListMap.empty, fullJavaHomes := CrossJava.expandJavaHomes(discoveredJavaHomes.value ++ javaHomes.value), @@ -3344,7 +3345,12 @@ object Classpaths { p1.extra(SbtPomExtraProperties.VERSION_SCHEME_KEY -> x) case _ => p1 } - p2 + val p3 = releaseNotesURL.value match { + case Some(u) => + p1.extra("info.releaseNotesUrl" -> u.toExternalForm) + case _ => p2 + } + p3 } def pluginProjectID: Initialize[ModuleID] = Def.setting { diff --git a/main/src/main/scala/sbt/Keys.scala b/main/src/main/scala/sbt/Keys.scala index 10ae7f1b1..65bc3687b 100644 --- a/main/src/main/scala/sbt/Keys.scala +++ b/main/src/main/scala/sbt/Keys.scala @@ -346,6 +346,7 @@ object Keys { val entryApiURL = AttributeKey[URL]("entryApiURL", "Base URL for the API documentation for a classpath entry.") val apiMappings = taskKey[Map[File, URL]]("Mappings from classpath entry to API documentation base URL.").withRank(BMinusSetting) val autoAPIMappings = settingKey[Boolean]("If true, automatically manages mappings to the API doc URL.").withRank(BMinusSetting) + val releaseNotesURL = settingKey[Option[URL]]("URL for release notes.").withRank(BMinusSetting) val scmInfo = settingKey[Option[ScmInfo]]("Basic SCM information for the project.").withRank(BMinusSetting) val projectInfo = settingKey[ModuleInfo]("Addition project information like formal name, homepage, licenses etc.").withRank(CSetting) val defaultConfiguration = settingKey[Option[Configuration]]("Defines the configuration used when none is specified for a dependency in ivyXML.").withRank(CSetting) From 3cde7f8e073ae2d9047a9c4a717f8821cf26f41e Mon Sep 17 00:00:00 2001 From: Arman Bilge Date: Sun, 12 Feb 2023 23:27:14 +0000 Subject: [PATCH 2/6] Missing comma --- main/src/main/scala/sbt/Defaults.scala | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/main/src/main/scala/sbt/Defaults.scala b/main/src/main/scala/sbt/Defaults.scala index d8b51d201..f6a6037fd 100644 --- a/main/src/main/scala/sbt/Defaults.scala +++ b/main/src/main/scala/sbt/Defaults.scala @@ -200,8 +200,8 @@ object Defaults extends BuildCommon { autoCompilerPlugins :== true, scalaHome :== None, apiURL := None, - releaseNotesURL := None - javaHome :== None, + releaseNotesURL := None, + javaHome :== None, discoveredJavaHomes := CrossJava.discoverJavaHomes, javaHomes :== ListMap.empty, fullJavaHomes := CrossJava.expandJavaHomes(discoveredJavaHomes.value ++ javaHomes.value), From 11ea11e382ede393025a8f7b86d0ff7927122f3a Mon Sep 17 00:00:00 2001 From: Arman Bilge Date: Sun, 12 Feb 2023 22:54:19 -0800 Subject: [PATCH 3/6] Fix MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Marco Zühlke --- main/src/main/scala/sbt/Defaults.scala | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main/src/main/scala/sbt/Defaults.scala b/main/src/main/scala/sbt/Defaults.scala index f6a6037fd..e8925e217 100644 --- a/main/src/main/scala/sbt/Defaults.scala +++ b/main/src/main/scala/sbt/Defaults.scala @@ -3347,7 +3347,7 @@ object Classpaths { } val p3 = releaseNotesURL.value match { case Some(u) => - p1.extra("info.releaseNotesUrl" -> u.toExternalForm) + p2.extra("info.releaseNotesUrl" -> u.toExternalForm) case _ => p2 } p3 From ed29e35f410879432027f9688a35e9e6d00e6db5 Mon Sep 17 00:00:00 2001 From: Arman Bilge Date: Tue, 28 Feb 2023 06:08:13 +0000 Subject: [PATCH 4/6] Bump lm, use release notes key --- main/src/main/scala/sbt/Defaults.scala | 2 +- .../scala/sbt/coursierint/CoursierInputsTasks.scala | 13 +++++++++++-- project/Dependencies.scala | 2 +- 3 files changed, 13 insertions(+), 4 deletions(-) diff --git a/main/src/main/scala/sbt/Defaults.scala b/main/src/main/scala/sbt/Defaults.scala index e8925e217..966df3818 100644 --- a/main/src/main/scala/sbt/Defaults.scala +++ b/main/src/main/scala/sbt/Defaults.scala @@ -3347,7 +3347,7 @@ object Classpaths { } val p3 = releaseNotesURL.value match { case Some(u) => - p2.extra("info.releaseNotesUrl" -> u.toExternalForm) + p2.extra(SbtPomExtraProperties.POM_RELEASE_NOTES_KEY -> u.toExternalForm) case _ => p2 } p3 diff --git a/main/src/main/scala/sbt/coursierint/CoursierInputsTasks.scala b/main/src/main/scala/sbt/coursierint/CoursierInputsTasks.scala index 9059f36ef..70b7f2ffc 100644 --- a/main/src/main/scala/sbt/coursierint/CoursierInputsTasks.scala +++ b/main/src/main/scala/sbt/coursierint/CoursierInputsTasks.scala @@ -45,6 +45,7 @@ object CoursierInputsTasks { sv: String, sbv: String, auOpt: Option[URL], + rnOpt: Option[URL], description: String, homepage: Option[URL], vsOpt: Option[String], @@ -70,8 +71,15 @@ object CoursierInputsTasks { proj1.withProperties(proj1.properties :+ (SbtPomExtraProperties.VERSION_SCHEME_KEY -> vs)) case _ => proj1 } - proj2.withInfo( - proj2.info.withDescription(description).withHomePage(homepage.fold("")(_.toString)) + val proj3 = rnOpt match { + case Some(rn) => + proj2.withProperties( + proj2.properties :+ (SbtPomExtraProperties.POM_RELEASE_NOTES_KEY -> rn.toString) + ) + case _ => proj2 + } + proj3.withInfo( + proj3.info.withDescription(description).withHomePage(homepage.fold("")(_.toString)) ) } @@ -84,6 +92,7 @@ object CoursierInputsTasks { scalaVersion.value, scalaBinaryVersion.value, apiURL.value, + releaseNotesURL.value, description.value, homepage.value, versionScheme.value, diff --git a/project/Dependencies.scala b/project/Dependencies.scala index c25f2dcbd..7d7690d0d 100644 --- a/project/Dependencies.scala +++ b/project/Dependencies.scala @@ -14,7 +14,7 @@ object Dependencies { // sbt modules private val ioVersion = nightlyVersion.getOrElse("1.8.0") private val lmVersion = - sys.props.get("sbt.build.lm.version").orElse(nightlyVersion).getOrElse("1.8.0") + sys.props.get("sbt.build.lm.version").orElse(nightlyVersion).getOrElse("1.9.0-M1") val zincVersion = nightlyVersion.getOrElse("1.8.0") private val sbtIO = "org.scala-sbt" %% "io" % ioVersion From 1a2b2467b4a0ae9100b9adbdb254fbe084dbcadd Mon Sep 17 00:00:00 2001 From: Arman Bilge Date: Tue, 28 Feb 2023 18:05:27 +0000 Subject: [PATCH 5/6] Add test for `releaseNotesURL` --- .../src/sbt-test/dependency-management/make-pom/build.sbt | 7 +++++++ sbt-app/src/sbt-test/dependency-management/make-pom/test | 1 + 2 files changed, 8 insertions(+) diff --git a/sbt-app/src/sbt-test/dependency-management/make-pom/build.sbt b/sbt-app/src/sbt-test/dependency-management/make-pom/build.sbt index f0bfc1f18..458204b33 100644 --- a/sbt-app/src/sbt-test/dependency-management/make-pom/build.sbt +++ b/sbt-app/src/sbt-test/dependency-management/make-pom/build.sbt @@ -5,7 +5,9 @@ lazy val root = (project in file(".")) settings ( TaskKey[Unit]("checkPom") := checkPom.value, TaskKey[Unit]("checkExtra") := checkExtra.value, TaskKey[Unit]("checkVersionPlusMapping") := checkVersionPlusMapping.value, + TaskKey[Unit]("checkReleaseNotesURL") := checkReleaseNotesURL.value, resolvers += Resolver.sonatypeRepo("snapshots"), + releaseNotesURL := Some(url("https://github.com/sbt/sbt/releases")), makePomConfiguration := { val p = makePomConfiguration.value p.withExtra() @@ -46,6 +48,11 @@ lazy val checkVersionPlusMapping = (readPom) map { (pomXml) => () } +lazy val checkReleaseNotesURL = (readPom) map { (pomXml) => + val notes = pomXml \ "properties" \ "info.releaseNotesUrl" + if (notes.isEmpty) sys.error("'releaseNotesUrl' not found in generated pom.xml.") else () +} + lazy val checkPom = Def task { val pomXML = readPom.value checkProject(pomXML) diff --git a/sbt-app/src/sbt-test/dependency-management/make-pom/test b/sbt-app/src/sbt-test/dependency-management/make-pom/test index 1e92792f9..409db17a2 100644 --- a/sbt-app/src/sbt-test/dependency-management/make-pom/test +++ b/sbt-app/src/sbt-test/dependency-management/make-pom/test @@ -1,3 +1,4 @@ > checkPom > checkExtra > checkVersionPlusMapping +> checkReleaseNotesURL From 414c3a4358d2da7fe67b4846ab6ba06552a1f6ff Mon Sep 17 00:00:00 2001 From: Arman Bilge Date: Tue, 28 Feb 2023 18:08:29 +0000 Subject: [PATCH 6/6] Add test for `apiURL` --- .../src/sbt-test/dependency-management/make-pom/build.sbt | 7 +++++++ sbt-app/src/sbt-test/dependency-management/make-pom/test | 1 + 2 files changed, 8 insertions(+) diff --git a/sbt-app/src/sbt-test/dependency-management/make-pom/build.sbt b/sbt-app/src/sbt-test/dependency-management/make-pom/build.sbt index 458204b33..03d7f883b 100644 --- a/sbt-app/src/sbt-test/dependency-management/make-pom/build.sbt +++ b/sbt-app/src/sbt-test/dependency-management/make-pom/build.sbt @@ -5,8 +5,10 @@ lazy val root = (project in file(".")) settings ( TaskKey[Unit]("checkPom") := checkPom.value, TaskKey[Unit]("checkExtra") := checkExtra.value, TaskKey[Unit]("checkVersionPlusMapping") := checkVersionPlusMapping.value, + TaskKey[Unit]("checkAPIURL") := checkAPIURL.value, TaskKey[Unit]("checkReleaseNotesURL") := checkReleaseNotesURL.value, resolvers += Resolver.sonatypeRepo("snapshots"), + apiURL := Some(url("https://www.scala-sbt.org/1.x/api/")), releaseNotesURL := Some(url("https://github.com/sbt/sbt/releases")), makePomConfiguration := { val p = makePomConfiguration.value @@ -48,6 +50,11 @@ lazy val checkVersionPlusMapping = (readPom) map { (pomXml) => () } +lazy val checkAPIURL = (readPom) map { (pomXml) => + val notes = pomXml \ "properties" \ "info.apiURL" + if (notes.isEmpty) sys.error("'apiURL' not found in generated pom.xml.") else () +} + lazy val checkReleaseNotesURL = (readPom) map { (pomXml) => val notes = pomXml \ "properties" \ "info.releaseNotesUrl" if (notes.isEmpty) sys.error("'releaseNotesUrl' not found in generated pom.xml.") else () diff --git a/sbt-app/src/sbt-test/dependency-management/make-pom/test b/sbt-app/src/sbt-test/dependency-management/make-pom/test index 409db17a2..b6f7bda7d 100644 --- a/sbt-app/src/sbt-test/dependency-management/make-pom/test +++ b/sbt-app/src/sbt-test/dependency-management/make-pom/test @@ -1,4 +1,5 @@ > checkPom > checkExtra > checkVersionPlusMapping +> checkAPIURL > checkReleaseNotesURL