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> <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> <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
