+def getMdDate(File mdFile) {
+ return mdFileComponents(mdFile, true)
+}
+
+def getMdSections(String content) {
+ def sections = [:]
+ def sectionContent = ""
+ def sectionName = null
+ content.eachLine { line ->
+ def m = null
+ if (m = line =~ /^##([^#].*)$/) {
+ if (sectionName != null) {
+ sections[sectionName] = sectionContent
+ sectionName = null
+ sectionContent = ""
+ }
+ sectionName = m[0][1].trim()
+ sectionName = sectionName.toLowerCase()
+ sectionName = sectionName.replaceAll(/ +/, "_")
+ sectionName = sectionName.replaceAll(/[^a-z0-9_\-]/, "")
+ } else if (sectionName != null) {
+ sectionContent += line+"\n"
+ }
+ }
+ return sections
+}
+
+task releasesTemplates {
+ def releasesTemplateFile = file("${jalviewDir}/${releases_template}")
+ def whatsnewTemplateFile = file("${jalviewDir}/${whatsnew_template}")
+ def releasesHtmlFile = file("${helpSourceDir}/${releases_html}")
+ def whatsnewHtmlFile = file("${helpSourceDir}/${whatsnew_html}")
+ def releasesMdDir = "${jalviewDir}/${releases_dir}"
+ def whatsnewMdDir = "${jalviewDir}/${whatsnew_dir}"
+
+ doFirst {
+ def releaseFiles = fileTree(dir: releasesMdDir, include: "release-*.md")
+ def releaseFilesDates = releaseFiles.collectEntries {
+ [(it): getMdDate(it)]
+ }
+ releaseFiles = releaseFiles.sort { a,b -> releaseFilesDates[a].compareTo(releaseFilesDates[b]) }
+
+ def releasesTemplate = releasesTemplateFile.text
+ def m = releasesTemplate =~ /(?s)__VERSION_LOOP_START__(.*)__VERSION_LOOP_END__/
+ def versionTemplate = m[0][1]
+
+ def versions = ""
+ releaseFiles.each { rFile ->
+ def (rMap, rContent) = mdFileComponents(rFile)
+
+ def vm = JALVIEW_VERSION =~ /^(.+)\.(\d+)$/
+ def branchVersion = m[0][1]
+ def minorVersion = m[0][2]
+ def displayDate = releaseFilesDates[rFile].format("d MMMMM yyyy")
+
+ def rContentSections = getMdSections(rContent)
+
+ def rVersion = versionTemplate
+ if (rVersion != "") {
+ rVersion = hugoTemplateSubstitutions(rVersion,
+ [
+ BRANCH_VERSION: branchVersion,
+ MINOR_VERSION: minorVersion,
+ DISPLAY_DATE: displayDate,
+ NEW_FEATURES: rContentSections["new_features"],
+ KNOWN_ISSUES: rContentSections["known_issues"]
+ ]
+ )
+ }
+
+ println("RVERSION='$rVersion'")
+
+
+ }
+ }
+
+ inputs.file(releasesTemplateFile)
+ inputs.file(whatsnewTemplateFile)
+ inputs.dir(releasesMdDir)
+ inputs.dir(whatsnewMdDir)
+ outputs.file(releasesHtmlFile)
+ outputs.file(whatsnewHtmlFile)
+}
+