You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@grails.apache.org by ja...@apache.org on 2025/07/23 22:46:08 UTC

(grails-core) 01/01: Enhance CreateReleaseDropDownTask so it can be used by grails-spring-security

This is an automated email from the ASF dual-hosted git repository.

jamesfredley pushed a commit to branch enhance-create-release-drop-down
in repository https://gitbox.apache.org/repos/asf/grails-core.git

commit 5ac1db4f69e591a4a89601ef81954c83d9db09e3
Author: James Fredley <ja...@users.noreply.github.com>
AuthorDate: Wed Jul 23 18:45:52 2025 -0400

    Enhance CreateReleaseDropDownTask so it can be used by grails-spring-security
---
 .../doc/dropdown/CreateReleaseDropDownTask.groovy  | 22 ++++++++++++++++------
 .../groovy/grails/doc/dropdown/Snapshot.groovy     |  3 ++-
 2 files changed, 18 insertions(+), 7 deletions(-)

diff --git a/grails-gradle/docs-core/src/main/groovy/grails/doc/dropdown/CreateReleaseDropDownTask.groovy b/grails-gradle/docs-core/src/main/groovy/grails/doc/dropdown/CreateReleaseDropDownTask.groovy
index d3c1b2d49b..235d139f88 100644
--- a/grails-gradle/docs-core/src/main/groovy/grails/doc/dropdown/CreateReleaseDropDownTask.groovy
+++ b/grails-gradle/docs-core/src/main/groovy/grails/doc/dropdown/CreateReleaseDropDownTask.groovy
@@ -42,7 +42,8 @@ import java.nio.file.attribute.BasicFileAttributes
 @CacheableTask
 abstract class CreateReleaseDropDownTask extends DefaultTask {
 
-    private static final String GRAILS_DOC_BASE_URL = "https://docs.grails.org"
+    @Input
+    final Property<String> docBaseUrl
 
     @Input
     final Property<String> githubSlug
@@ -68,6 +69,12 @@ abstract class CreateReleaseDropDownTask extends DefaultTask {
     @OutputDirectory
     final DirectoryProperty modifiedPagesDirectory
 
+    @Input
+    final Property<String> versionHtml
+
+    @Input
+    final Property<String> additionalPath
+
     @Inject
     CreateReleaseDropDownTask(ObjectFactory objects, Project project) {
         group = 'documentation'
@@ -80,6 +87,9 @@ abstract class CreateReleaseDropDownTask extends DefaultTask {
         modifiedPagesDirectory = objects.directoryProperty().convention(project.layout.buildDirectory.dir("modified-pages"))
         gitTags = objects.fileProperty().convention(project.layout.buildDirectory.file('git-tags.txt'))
         minimumVersion = objects.property(SoftwareVersion).convention(new SoftwareVersion(major: 5))
+        docBaseUrl = objects.property(String).convention("https://docs.grails.org")
+        versionHtml = objects.property(String).convention("<p><strong>Version:</strong> " + projectVersion.get() + "</p>")
+        additionalPath = objects.property(String).convention("")
     }
 
     /**
@@ -98,7 +108,6 @@ abstract class CreateReleaseDropDownTask extends DefaultTask {
         List<SoftwareVersion> softwareVersions = parseSoftwareVersions(projectVersion, result)
         logger.lifecycle("Detected Project Version: ${projectVersion} and Software Versions: ${softwareVersions*.versionText.join(',')}")
 
-        final String versionHtml = "<p><strong>Version:</strong> ${projectVersion}</p>"
         Path guideDirectory = sourceDocsDirectory.get().asFile.toPath()
 
         Map<String, Path> filesToAddDropdown = filesToAddDropdowns.collectEntries { [it.absolutePath, it.toPath()] }
@@ -121,8 +130,8 @@ abstract class CreateReleaseDropDownTask extends DefaultTask {
                     String pageRelativePath = guideDirectory.toFile().relativePath(file.toFile())
                     String selectHtml = select(options(projectVersion, pageRelativePath, softwareVersions))
 
-                    final String versionWithSelectHtml = "<p><strong>Version:</strong>&nbsp;<span style='width:100px;display:inline-block;'>${selectHtml}</span></p>"
-                    targetFile.toFile().text = file.text.replace(versionHtml, versionWithSelectHtml)
+                    final String versionWithSelectHtml = "<p><strong>Version:</strong>&nbsp;<span style='display:inline-block;'>${selectHtml}</span></p>"
+                    targetFile.toFile().text = file.text.replace(versionHtml.get(), versionWithSelectHtml)
 
                     filesToAddDropdown.remove(absolutePath)
                 } else {
@@ -148,13 +157,14 @@ abstract class CreateReleaseDropDownTask extends DefaultTask {
      */
     private List<String> options(String version, String pageRelativePath, List<SoftwareVersion> softwareVersions) {
         List<String> options = []
-        final String snapshotHref = GRAILS_DOC_BASE_URL + "/snapshot/" + pageRelativePath
+
+        final String snapshotHref = docBaseUrl.get() + "/snapshot/" + additionalPath.get() + pageRelativePath
         options << option(snapshotHref, "SNAPSHOT", version.endsWith("-SNAPSHOT"))
 
         softwareVersions
                 .forEach { softwareVersion ->
                     final String versionName = softwareVersion?.versionText
-                    final String href = GRAILS_DOC_BASE_URL + "/" + (versionName?.endsWith("-SNAPSHOT") ? 'snapshot' : versionName) + "/" + pageRelativePath
+                    final String href = docBaseUrl.get() + "/" + (versionName?.endsWith("-SNAPSHOT") ? "snapshot" : versionName) + "/" + additionalPath.get() + pageRelativePath
                     options << option(href, versionName, version == versionName)
                 }
 
diff --git a/grails-gradle/docs-core/src/main/groovy/grails/doc/dropdown/Snapshot.groovy b/grails-gradle/docs-core/src/main/groovy/grails/doc/dropdown/Snapshot.groovy
index 9e4a199bff..9c1434736c 100644
--- a/grails-gradle/docs-core/src/main/groovy/grails/doc/dropdown/Snapshot.groovy
+++ b/grails-gradle/docs-core/src/main/groovy/grails/doc/dropdown/Snapshot.groovy
@@ -20,7 +20,8 @@
 package grails.doc.dropdown
 
 
-class Snapshot implements Comparable<Snapshot> {
+class Snapshot implements Comparable<Snapshot>, Serializable {
+    private static final long serialVersionUID = 1L;
 
     private String text