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 <[email protected]>
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
 

Reply via email to